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)