关于 listView(列表) 的各种使用方法
############## 这是栅栏
##############
##############
##############
=============================================================
listView 是一个用来输出列表的 view.在手机 app 中经常要用到列表比如笔记 app 中每个笔记的显示也是运用 listView.
下面来大致介绍各种 listView 的用法
本文章大致介绍这几种 listView 方法.simpleadapter,baseAdapter 与 expandablelistAdapter
其中 simpleadapter 一般用于简单的列表,虽然可以实现任意的布局,但是无法达到逻辑判断的目的,比如无法让每一个 list 显示的图片不一样.而 baseAdapter 基本可以满足所有的需求.
下面先介绍 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(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 为一个抽象类,所以要使用它需要实现一个类出来并实现它的抽象方法
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;
}
在井号中间可以插入想要使用的逻辑
评论