首先要知道明白ListView的作用:显示列表数据,无论是期末考试还是期末大作业都必然的会考到、使用到ListView。例如:通讯录列表、学生列表、新闻列表、资讯列表等等。
其次需要知道使用ListView需要写哪些代码?
1、创建数据源,可以是简单的数组、List对象、数据库获取的对象等等。
2、创建视图以及item视图,要知道使用ListView起码需要两个xml文件,一个是LsitView一个是其item的布局。
如何新建xml文件?右箭layout->new->layout Resource File
3、编写适配器,编写一个最简单的适配器,继承于BaseAdapter,并重写方法。这里用到快捷键:alt+Enter(回车),点击Implement methods,会快速重写需要重写的方法。
全选并确认
然后修改一下重写的方法
请看以下修改后的代码
public class StudentAdapter extends BaseAdapter {
//数据源
ArrayList<Student> sData = new ArrayList<>();
//上下文
private Context mContext;
//构造方法 new对象的时候需要传递进来数据源和上下文
public StudentAdapter(ArrayList<Student> sData, Context mContext) {
this.sData = sData;
this.mContext = mContext;
}
//ListView长度 (item个数) 一般都是数据源的长度 如List类型的话是.size()
//数组类型的话 是 数组.length
@Override
public int getCount() {
return sData.size();
}
//ListView 的item List类型的话是 .get(position) 数组的话是 数组[position]
@Override
public Object getItem(int position) {
return sData.get(position);
}
//返回item的id 一般就是返回position
@Override
public long getItemId(int position) {
return position;
}
//最难理解 最容易出错的getView方法 从名字看就是获取item的视图
//所以需要完成获取layout以及设置视图内的数据 如ImageView、TextView、EditText等
// convertView = LayoutInflater.from(mContext).inflate(R.layout.student_list,null);
//一般不变 R.layout.自己的item视图
//return convertView;之前绑定视图控件并设置数据
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//更常用这种写法
//View view=View.inflate(mContext,R.layout.student_list,null);
convertView = LayoutInflater.from(mContext).inflate(R.layout.student_list,null);
TextView txt_id = (TextView) convertView.findViewById(R.id.id);
TextView txt_name = (TextView) convertView.findViewById(R.id.name);
TextView txt_age = (TextView) convertView.findViewById(R.id.age);
TextView txt_address = (TextView) convertView.findViewById(R.id.address);
txt_id.setText(sData.get(position).getId()+"");
txt_name.setText(sData.get(position).getName());
txt_age.setText(sData.get(position).getAge()+"");
txt_address.setText(sData.get(position).getAddress());
return convertView;
}
}
4、设置适配器,在代码中调用ListView的SetAdapter方法 设置适配器
ListView listView=findViewById(R.id.listview);
//看需要的参数 有的需要传递数据源
TestAdapter mAdapter=new TestAdapter (this);
listView.setAdapter(simpleAdapter);
解析不详细不懂,可以评论或私信,后续在本章末尾会补充视频版本的解释ListView
2023-6-5
视频版本已经上传至主页
主页视频模糊 可看B站