写点什么

关于 listView(列表) 的各种使用方法

用户头像
Android架构
关注
发布于: 1 小时前

############## 这是栅栏


##############


##############


##############


介绍


=============================================================


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


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


"+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 中声明即可

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
关于listView(列表)的各种使用方法