参考链接
https://www.bilibili.com/video/BV1mW411S7ot?p=42
目录
1.listView
2.simpleAdapter
3.baseAdapter
4.关于baseAdapter在binding中的应用
############## 这是栅栏
##############
##############
##############
介绍
listView是一个用来输出列表的view.在手机app中经常要用到列表比如笔记app中每个笔记的显示也是运用listView.
下面来大致介绍各种listView的用法
本文章大致介绍这几种listView方法.simpleadapter,baseAdapter与expandablelistAdapter
其中simpleadapter一般用于简单的列表,虽然可以实现任意的布局,但是无法达到逻辑判断的目的,比如无法让每一个list显示的图片不一样.而baseAdapter基本可以满足所有的需求.
下面先介绍listView的使用(如果只需要输出一个个数据的话,只用listView即可)
##############
##############
##############
listView的使用
1.先生成,将listView拖入到窗口中

2.接下来创建listView要用到的数据
在res/values文件夹下创建新的xml文件arrays.xml
里面的内容如下
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="a">
<item>A</item>
<item>B</item>
<item>C</item>
</string-array>
</resources>
String-array表示listView要用到的数据集
3.回到listView界面.
可以通过在
<ListView></ListView>
中输入android:entries="@array/a"调用或者在该界面修改

结果如图

但是现在很多功能还不能实现,比如一个list中包含多个数据,下面的simpleAdapter可以进一步解决问题
##############
##############
##############
##############
##############
##############
SimpleAdapter的使用
simpleAdapter是一个方法
构造函数为 SimpleAdapter(Context context,List<? Extends Map
其中context为上下文,只需传入this
data为数据源,数据源可以通过map的形式传入
Resource是布局文件的id,因为simpleAdapter已经可以实现简单的布局了,所以另外建一个layout文件出来
from是map对象中的key值
to是要传入上面resource布局文件的view的 id所组成的数组
1.所以先建立data数据源
List<Map<String,?>> inf=new ArrayList<>(); //map
for(int i=0;i<3;i++){
Map<String, String> temp=new HashMap<>();r
temp.put("name","feng"+i);
temp.put("age",10+i+"");
inf.add(temp);
}
上面代码简单添加了几个数据,现在inf可以作为参数传入
2.然后新建立一个layout作为单个列表的格式
示例这里创建一个constraintLayout名为lista

里面建两个textView(id分别为textView1与textView2)
3.from需要表明要传入变量的id
String[] from={“name”,“age”};
4.int[] to需要表明新创建的layout里面要被赋值的textView的id
Int[] to={R.id.textView1,R.id.textView2}
5.现在创建simpleAdapter
SimpleAdapter simpleAdapter=new SimpleAdapter(this,inf,R.layout.lista,from,to);
6.listView添加该adapter
listView.setAdapter(simpleAdapter);
结果如图

simpleAdapter基本可以满足大部分简单的需求,而baseAdapter可以实现逻辑编写
##############
##############
##############
##############
##############
BaseAdapter的使用
BaseAdapter为一个抽象类,所以要使用它需要实现一个类出来并实现它的抽象方法
1.先定义列表要显示的数据,这里同simpleAdapter的数据一样
List<Map<String,?>> inf=new ArrayList<>(); //map
for(int i=0;i<3;i++){
Map<String, String> temp=new HashMap<>();r
temp.put("name","feng"+i);
temp.put("age",10+i+"");
inf.add(temp);
}
2.实现BaseAdapter类
@Override
public int getCount() { //表示列表中的个数 ,即inf中的个数
return inf.size();
}
@Override
public Object getItem(int position) { //获取指定位置的东西
return inf.get(position);
}
@Override
public long getItemId(int position) { //获取指定位置物品的id,此处原样返回即可
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) { //所有的逻辑书写都在这里
//将lista与该view绑定,之后只要return 该view即可
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.lista,null);
##########################################################################
//
TextView textView=view.findViewById(R.id.textView);
textView.setText(inf.get(position).get("name");
TextView textView2=view.findViewById(R.id.textView2);
textView2.setText(inf.get(position).get("age");
##########################################################################
return view;
}
在井号中间可以插入想要使用的逻辑
3.最后在activity中声明即可
MyBaseAdapter myBaseAdapter=new MyBaseAdapter();
listView.setAdapter(myBaseAdapter);
##############
##############
##############
##############
##############
关于BaseAdapter和binding的结合使用
1.创建数据类
public class Data {
public int a;
public int b;
}
2.在xml中加入对数据类的引用
<data>
<variable
name="data1"
type="com.example.viewmodeltest.Data" />
</data>
3.baseAdapter的getView()方法中改写为下面
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ListaBinding binding2; //ListaBinding是lista.xml转换成data binding格式后自动生成的类
//将binding2进行绑定
if(convertView==null){
binding2= DataBindingUtil.inflate(LayoutInflater.from(this.mContext),R.layout.lista,parent,false);
convertView=binding2.getRoot();
convertView.setTag(binding2);
}
else{
binding2=(ListaBinding) convertView.getTag();
}
binding2.setVariable(BR.data1,this.data.get(position)); //此方法为数据的传输
return convertView;
}
参考链接
https://www.bilibili.com/video/BV1mW411S7ot?p=42
本文深入讲解了Android开发中ListView的使用方法,包括simpleAdapter、baseAdapter及与Data Binding结合的应用,帮助开发者掌握列表视图的高级操作。
6523

被折叠的 条评论
为什么被折叠?



