让代码更简单

Android自定义ListView简单使用

重要:本文最后更新于2022-11-08 19:26:10,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

Android应用的listview非常容易见到,不过谷歌自带的原版list控件非常简洁,功能较为单一,只能显示一些简单的文字信息,对于功能复杂的list一般开发者都不会采用listview这个控件来做,Recyclerview这个功能更加详细的控件更适合,不过对于那种内容比较简单,但原生listview无法显示的情况,自定义listview布局则非常重要,下面是一个简单的listview使用方法,作用于原生listview一样,仅仅只是显示文字信息。

Android自定义ListView简单使用

Android自定义ListView简单使用

首先我们在显示的布局页面放上一个listview,布局文件如下:

复制
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    >
            <ListView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/deplist"/>
</LinearLayout>

然后为listview创建item布局文件,我们这里只用一个textview做演示,创建listview_item.xml文件:

复制
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
<TextView
    android:id="@+id/listtext"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dp"
    android:layout_marginBottom="10dp"
    android:layout_marginLeft="20dp"
    android:layout_marginRight="20dp"
    android:textSize="24dp"
    android:hint="姓名"
    />
</LinearLayout>

然后为这个item布局文件建立一个实体类存储数据,创建emp.java,代码如下:

复制
public class emp{
    private String name;
    public emp(String str){
        this.name=str;
    }
    public void setname(String str){
        this.name=str;
    }
    public  String getname(){
        return this.name;
    }
}

然后新建一个数据适配器,为我们自定义的listview适配数据,创建empAdapter.java继承于ArrayAdapter,然后在这个类里重写getview方法,对我们自定义布局进行数据装载,代码如下:

复制
public class empAdapter extends ArrayAdapter{
private int resourdid;
    public empAdapter(@NonNull Context context, @LayoutRes int resource, @NonNull List objects) {
        super(context, resource, objects);
        resourdid=resource;
    }

    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        View view;
        ViewHolder holder;
        empinfo mympinfo=(empinfo)getItem(position);
        if(convertView==null){
            view= LayoutInflater.from(getContext()).inflate(resourdid,parent,false);
            holder=new ViewHolder();
            holder.textname= (TextView) view.findViewById(R.id.listtext);
            view.setTag(holder);
        }else{
            view=convertView;
            holder= (ViewHolder) view.getTag();
        }
         holder.textname.setText(mympinfo.getnaem());

        return view;
    }
    class ViewHolder{
        TextView textname;

    }
}

到此自定义完成,下面只需要到加载我们第一个listview布局页面使用即可,代码如下:

复制
listview= (ListView) findViewById(R.id.deplist);
for (int i = 0; i < 10; i++) {
    data.add(new empinfo("我是item"+i));
}
empAdapter adapter=new empAdapter(DeplistActivity.this, R.layout.depemp_layout,data);
listview.setAdapter(adapter);

看起来复杂,实施起来还是很简单的,你可以用它给你的listview加载文字与图片,甚至选择框等等。

感觉很棒!可以赞赏支持我哟~

0 打赏

评论 (0)

登录后评论
QQ咨询 邮件咨询 狗哥推荐