ListView案例集锦

1.ArrayAdapter的创建方式

1.构造函数简介

public ArrayAdapter (Context context, int resource, T[] objects)

  • 上下文,就是当前的Java文件
  • 资源文件,就是每一个子项(每一行)的布局,比如当个的textView,带多选框的,带复选框的等等
  • 数据源,数组或者是集合

常见的小布局:

  • 前面统一写:android.R.layout.
simplelistitem1:每个列表项都是一个普通的textView
simplelistitem2:每个列表项都是一个普通的textView(字体略大)
simplelistitemchecked:每个列表项都是一个已勾选的列表项
simplelistitemmultiplechoice:每个列表项都是带多选框的文本
simplelistitemsingle_choice:每个列表项都是带单选框的文本

1.1数组当数据源

第一步:编写布局文件

<!--    数组当数据源--><ListViewandroid:id="@+id/mybooks"android:layout_width="wrap_content"android:layout_height="wrap_content"android:divider="@mipmap/blue"android:dividerHeight="10dp"/>

第二步:创建数组数据,编写Java中的适配器

注意子项的布局文件开始要从android包开始导入。

第三步:绑定适配器

public class Listviewdemoactivity2Activity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_listviewdemoactivity2);
//        第一步:获取布局文件中的ListViewListView listView=findViewById(R.id.mybooks);
//        第二步:创建数据源String[] books={"Java" ,"数据结构","大学计算机","专业英语","Vue速成"};
//        第三步:创建ArrayAdapter,传入数据
//        注意一个小小的问题,从系统中导入子项的布局文件的样式要从安卓的包开始写ArrayAdapter<String> adapter=new ArrayAdapter(this, android.R.layout.simple_list_item_1,books);
//      第四步:绑定适配器listView.setAdapter(adapter);}
}

效果图:

1.2集合当数据源

创建方式只需要把1.1的数组变成集合的形式就可以了。


public class Listviewdemoactivity2Activity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_listviewdemoactivity2);
//      第二种:采用集合中的数据
//        第一步:获取布局文件中的ListViewListView listView=findViewById(R.id.mybooks);
//        第二步:创建数据源List<String> colthes=new ArrayList<String>();colthes.add("褂子");colthes.add("裤子");colthes.add("鞋子");colthes.add("袜子");
//        第三步:创建ArrayAdapter,传入数据
//        注意一个小小的问题,从系统中导入子项的布局文件的样式要从安卓的包开始写ArrayAdapter<String> adapter=new ArrayAdapter(this, android.R.layout.simple_list_item_1,colthes);
//      第四步:绑定适配器listView.setAdapter(adapter);}
}

效果图:

2.entries引入资源文件的方式

1.这种方式的好处是不用写Java文件。直接写布局文件就可以了。布局文件如下。

第一步:先去values中的string文件中建立一个phone的数组。

  • name指定的名字就是要引入的数组。
<resources><string name="app_name">shiyan1</string>
<!--设置一个手机数组--><string-array name="phone"><item>苹果</item><item>华为</item><item>小米</item></string-array></resources>

第二步:mipmap中导入我们需要的分割线的图片。

  • 导入了一个blue.png

第三步:编写布局文件。

  • 设置分割线
  • 设置分割线的高度
  • entries引入我们第一步创建的数组

注意:此时数组中@array/数组名称,而不是我们的string。

<?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="vertical"tools:context=".Listviewdemoactivity2Activity">
<!--采用布局的方式进行创建--><ListViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:entries="@array/phone"android:divider="@mipmap/blue"android:dividerHeight="10dp"></ListView>
</LinearLayout>

第四步:设置成主启动类。

<activityandroid:name=".Listviewdemoactivity2Activity"android:exported="true" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>
</activity>

效果图:

3.采用SimpleAdapter的创建方式

为什么需要引入SimpleAdapter,原先的ArrayAdapter一行中只允许创建一个简单的子项,原先的子项的布局方式都是系统指定的。而现在的子项的布局方式并不是引入系统的而是我们自己去指定的,所以可以实现非常强大的布局。

1.构造函数

public SimpleAdapter (Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) 
  • 上下文
  • List代表的是整个ListView要显示的数据,Map代表的是每个子项需要显示的内容
  • Map中键的集合
  • 子项布局文件中的id,需要和参数进行一一的对应的

2.创建一个如下图所示的案例:

效果图:

第一步:创建一个父布局文件,写入一个Listview

<!--设置父布局--><ListViewandroid:id="@+id/mypeople"android:layout_width="match_parent"android:layout_height="wrap_content"></ListView>
<!--    设置要显示的内容--><TextViewandroid:id="@+id/result"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="当前选中的是:"android:textSize="30dp"/>

第二步:创建一个子布局文件。命名为mylistpeople

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:orientation="vertical"android:layout_height="match_parent"><ImageViewandroid:maxHeight="20dp"android:maxWidth="20dp"android:adjustViewBounds="true"android:id="@+id/header"android:layout_width="wrap_content"android:layout_height="wrap_content" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><TextViewandroid:id="@+id/username"android:layout_width="wrap_content"android:layout_height="wrap_content"/><TextViewandroid:id="@+id/desc"android:layout_width="wrap_content"android:layout_height="wrap_content" /></LinearLayout>
</LinearLayout>

第三步:去第一步创建的布局文件对应的activity进行编写SimpleAdapter的代码

  • 先往maimap中导入四张头像的图片im3.png,im4.png,im2.png,im1.png
public class SimpleadapterdemoActivity extends AppCompatActivity {
//创建数据private int header[]={R.mipmap.im1,R.mipmap.im2,R.mipmap.im3,R.mipmap.im4};private String username[]={"张三","李四","王五","赵六"};private String[] desc={"帅气","聪明","灵力","优秀"};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_simpleadapterdemo);
//       第一步:获取ListView对象ListView listView=findViewById(R.id.mypeople);
//        第二步:创建数据List<Map<String,Object>> mapList=new ArrayList<Map<String,Object>>();
//      第三步:初始化List集合for (int i = 0; i < 4; i++) {Map<String,Object> map=new HashMap<String,Object>();map.put("header",header[i]);map.put("username",username[i]);map.put("desc",desc[i]);mapList.add(map);}
//        第四步:创建一个SimpleAdapterSimpleAdapter simpleAdapter=new SimpleAdapter(this,mapList,R.layout.mylistpeople,new String[]{"header","username","desc"},new int[]{R.id.header,R.id.username,R.id.desc});
//      第五步:绑定适配器listView.setAdapter(simpleAdapter);}
}

此时创建的是没有设置监听器的,但是效果是有的:

第四步:设置监听器,将选中的信息动态的显示在下面

public class SimpleadapterdemoActivity extends AppCompatActivity {
//创建数据private int header[]={R.mipmap.im1,R.mipmap.im2,R.mipmap.im3,R.mipmap.im4};private String username[]={"张三","李四","王五","赵六"};private String[] desc={"帅气","聪明","灵力","优秀"};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_simpleadapterdemo);
//       第一步:获取ListView对象ListView listView=findViewById(R.id.mypeople);
//        第二步:创建数据List<Map<String,Object>> mapList=new ArrayList<Map<String,Object>>();
//      第三步:初始化List集合for (int i = 0; i < 4; i++) {Map<String,Object> map=new HashMap<String,Object>();map.put("header",header[i]);map.put("username",username[i]);map.put("desc",desc[i]);mapList.add(map);}
//        第四步:创建一个SimpleAdapterSimpleAdapter simpleAdapter=new SimpleAdapter(this,mapList,R.layout.mylistpeople,new String[]{"header","username","desc"},new int[]{R.id.header,R.id.username,R.id.desc});
//          补充:设置监听器
//        ListView中要显示的结果:TextView textView=this.findViewById(R.id.result);listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {TextView name=(TextView) view.findViewById(R.id.username);TextView desc=(TextView) view.findViewById(R.id.desc);
//          设置textView区域显示的内容
//                一定要getText才能获取当前的文本,需要toString才能转换成文本String result="当前选中的是:"+name.getText().toString()+"个人简介是:"+desc.getText().toString();textView.setText(result);
//                弹出提示的内容Toast toast=Toast.makeText(SimpleadapterdemoActivity.this, result, Toast.LENGTH_SHORT);toast.setGravity(Gravity.CENTER,0,0);toast.show();}});//      第五步:绑定适配器listView.setAdapter(simpleAdapter);}
}

完整的效果图:

3.1监听器

1.监听的方法。OnItemClickListener。

设置监听器的方法目的是为了做SimpleAdapter的案例的。

该监听器只有在点击子项目的时候才会进行触发的。

public void onItemClick(AdapterView<?> parent, View view, int position, long id) {}

  • parent获取的是整个ListView要显示的东西。parent就是一个ListView对象(强制转换)。
  • view,可以通过getText获取当前控件中的文字
  • position,当前的子项目所在的位置
  • id,和position相同

可以通过parent进行数据的获取的。先强制转换成我们的ListView对象,再去获取adapter对象。获取ListAdapter对象后再去获取Model对象。

ListView listView = (ListView) parent;ListAdapter listAdapter = listView.getAdapter();SelfModel selfModel = (SelfModel) listAdapter.getItem(position);

ListView案例集锦相关推荐

  1. python项目开发案例-Python项目开发案例集锦 PDF 全彩超清版

    给大家带来的一篇关于Python案例相关的电子书资源,介绍了关于Python.项目开发.Python案例方面的内容,本书是由吉林大学出版社出版,格式为PDF,资源大小99.1 MB,明日科技编写,目前 ...

  2. python开发项目案例集锦 pdf_Python项目开发案例集锦 实战项目代码+配套文件

    Python项目开发案例集锦涵盖8个开发方向.23个项目,循序渐进地让读者在实践中学习,在实践中提升实际开发能力. 全书共8篇:控制台程序.小游戏.实用小工具.网络爬虫.数据分析.人工智能.Web开发 ...

  3. 于.net开发平台项目案例集锦

    订阅 | 上一篇 | 下一篇 五味笔记 于.net开发平台项目案例集锦  作者:henq 日期:2007-09-14 字体大小: 小 中 大 基于.net开发平台项目案例集锦 经过微软.net Fra ...

  4. 微课|《Python编程基础与案例集锦(中学版)》第5章例题讲解(1)

    适用教材:<Python编程基础与案例集锦(中学版)>,董付国,应根球著,电子工业出版社 京东图书地址:https://item.jd.com/12571990.html 当当图书地址:h ...

  5. 微课|《Python编程基础与案例集锦(中学版)》第4章例题讲解(3)

    适用教材:<Python编程基础与案例集锦(中学版)>,董付国,应根球著,电子工业出版社 例4-10  把十进制数转换为其他进制形式. 例4-11  验证6174猜想. 例4-12.例4- ...

  6. 微课|《Python编程基础与案例集锦(中学版)》第4章例题讲解(2)

    适用教材:<Python编程基础与案例集锦(中学版)>,董付国,应根球著,电子工业出版社 例4-4 例4-5 例4-6 微课|中学生可以这样学Python(例4.3):百钱买百鸡 例4-7 ...

  7. 微课|《Python编程基础与案例集锦(中学版)》第4章例题讲解(1)

    适用教材:<Python编程基础与案例集锦(中学版)>,董付国,应根球著,电子工业出版社 例4-1 例4-2 例4-3 京东图书地址:https://item.jd.com/1257199 ...

  8. 微课|《Python编程基础与案例集锦(中学版)》第3章例题讲解(2)

    适用教材:<Python编程基础与案例集锦(中学版)>,董付国,应根球著,电子工业出版社 例3-6 微课|中学生可以这样学Python(例3.2):今天是今年的第几天 例3-7 例3-8 ...

  9. 微课|《Python编程基础与案例集锦(中学版)》第3章(1)

    适用教材:<Python编程基础与案例集锦(中学版)>,董付国,应根球著,电子工业出版社 例3-1 例3-2 例3-3:微课|中学生可以这样学Python(3.3节):多分支选择结构 例3 ...

最新文章

  1. Python 21 Flask(二)上下文管理详解
  2. 清除距今天7天的日志
  3. ST17H26调试板操作注意事项
  4. 如何替公司省下数千万勒索费用
  5. java 服务降级_微服务的降级学习
  6. Spring Cloud 学习笔记(2 / 3)
  7. (转) Twisted :第十九部分 改变之前的想法
  8. python设计模式5-原型模式
  9. 如何解决PS软件工作区不能吸附到工具栏?
  10. SSH框架 openSessionInView的配置
  11. 基于 RT-Thread Studio的CPK-RA6M4 开发环境搭建指南
  12. 无线路由器dhcp服务器连接失败,TP-Link路由器桥接提示“获取IP地址失败,请检查DHCP是否开启”怎么办...
  13. APP首次启动提示开启定位服务
  14. 智能汽车操作系统行业研究及十四五规划分析报告
  15. Java:使用Java编写一个随机点名器
  16. 超简单制作多系统启动U盘教程
  17. 前端嫌弃原生Swagger界面太low,于是我给她开通了超级VIP
  18. 慧差\畸变 zemax示例
  19. 建立互信及追求卓越的环境
  20. 大连马拉松比赛期间多条公交临时改线移站

热门文章

  1. 爬虫-requests库(二)get请求参数的使用 —搜狗搜索后爬取搜索结果
  2. Matlab实现孤勇者
  3. 【文献翻译】Prediction of Seizure Recurrence. A Note of Caution
  4. 用HTML和CSS3制作3D动画
  5. 程序员锁死服务器致游戏公司倒闭 当事人反驳:这锅我不背
  6. 计算机语言学 pdf,语言学必读书目PDF版.doc
  7. CSDN、Jupyter notebook、有道云笔记和Typora四者通用的Markdown语法
  8. 那些年啊,那些事——一个程序员的奋斗史 ——125
  9. 关爱码农成长:关于写代码二三事
  10. oracle整理笔记