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