博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android学习之路之ListView的使用
阅读量:3683 次
发布时间:2019-05-21

本文共 3838 字,大约阅读时间需要 12 分钟。

学习android三天了,发现这个ListView在android里应用非常的多,于是就花了一些时间仔细学习了一下!

以下是我个人的理解,如果有错误或不周到的地方,还请各位看客留言!有错误才有进步,这是我的名言!!!呵呵!

简单的介绍以下,ListVeiw就像一个对象集合,可以将数据一列一列的显示出来,而且可以添加点击事件,非常方便用户操作

手机自带的系统用的比较多

比如手机的设置界面:

*布局设计

这样的界面需要两个Layout制作,一个就是MainLayout,里面包含一个ListView

代码如下:

这个就相当于一个空集合

下面是PerListViewLayout,里面是每一条数据的样式

代码如下:

对应的界面如下:

大概可以分成这几个部分:

这个可以成为每一列数据的样式与布局

以后MainLayout里面的每条数据都会以这样的方式显示出来

* 数据源的创建

首先要取出数据,及要显示几条数据

穿件三个数组,分别存入imageView、textView1、textView2

代码如下:

private int[] picts = {R.drawable.ic_launcher, R.drawable.pict1, R.drawable.pict2, R.drawable.dog_bew}; 	private String[] contents1 = {"zhangsan", "lisi", "wangwu", "wangliu"};	private String[] contents2 = {"zhangsan_1", "lisi_1", "wangwu_1", "wangliu_1"};
图片资源的id,textView1的内容,textView2的内容。一一对应

将数据存入List里

代码如下:

// 创建数据源		List
> data; data = new ArrayList
>(); for (int i = 0; i < picts.length; i++) { Map
oneLine = new HashMap
(); oneLine.put("pict", picts[i]); oneLine.put("contents1", contents1[i]); oneLine.put("contents2", contents2[i]); data.add(oneLine); }
这里用List<Map<String,Objuct>>最好

开始创建自定义适配器

代码如下:

class MyAdapter extends SimpleAdapter	{		public MyAdapter(Context context, List
> data, int resource, String[] from, int[] to) { super(context, data, resource, from, to); } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = super.getView(position, convertView, parent); ImageView imageview = (ImageView)view.findViewById(R.id.imageViewId); TextView textview1 = (TextView)view.findViewById(R.id.textviewId1); TextView textview2 = (TextView)view.findViewById(R.id.textviewId2); imageview.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { Toast.makeText(ListViewActivity3.this, "点击的是图片", Toast.LENGTH_SHORT).show(); } }); textview1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { Toast.makeText(ListViewActivity3.this, "点击的是文字1", Toast.LENGTH_SHORT).show(); } }); textview2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { Toast.makeText(ListViewActivity3.this, "点击的是文字2", Toast.LENGTH_SHORT).show(); } }); // 实现事件。。。 return view; } }
注意上面的view,事件是点击MainLayout获取PerListViewLayout里的各个控件的id和文本
创建适配器

代码如下:

// 创建适配器		MyAdapter adapter = new MyAdapter(ListViewActivity3.this, data, R.layout.listview_one_linex, from, to);		listview.setAdapter(adapter);						listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {			@Override			public void onItemClick(AdapterView
arg0, View arg1, int position, long arg3) { Toast.makeText(ListViewActivity3.this, "第"+ (position+1) + "行", Toast.LENGTH_SHORT).show(); } });
开始看看from和to参数,

context - The context where the View associated with this SimpleAdapter is runningdata - A List of Maps. Each entry in the List corresponds to one row in the list. The Maps contain the data for each row, and should include all the entri	es specified in "from"resource - Resource identifier of a view layout that defines the views for this list item. The layout file should include at least those named views defin	ed in "to"from - A list of column names that will be added to the Map associated with each item.to - The views that should display column in the "from" parameter. These should all be TextViews. The first N views in this list are given the values of t	he first N columns in the from parameter.
英文看不懂,自己看吧,我的理解就是 一一对应关系
这样定义:

private String[] from = {"pict","contents1","contents2"};	private int[] to = {R.id.imageViewId, R.id.textviewId1, R.id.textviewId2};

代码运行起来的结果

下面是我做的图

这个是我自己的理解,肯定有很多地方不合理,我自己是懂了!!!!

你可能感兴趣的文章
单元测试
查看>>
操作系统概述
查看>>
Android内存泄漏分析
查看>>
重学JAVA_IO流——File类
查看>>
重构方法_重新组织函数
查看>>
结构化思维
查看>>
日常记录---编译文件后出现$1.class等文件
查看>>
跟我学UDS(ISO14229) ———— 0x22(ReadDataByIdentifier)
查看>>
跟我学UDS(ISO14229) ———— 0x23(ReadMemoryByAddress)
查看>>
跟我学UDS(ISO14229) ———— 0x2E(WriteDataByIdentifier)
查看>>
跟我学UDS(ISO14229) ———— 0x3D(WriteMemoryByAddress)
查看>>
跟我学UDS(ISO14229) ———— 0x14(ClearDiagnosticInformation)
查看>>
跟我学UDS(ISO14229) ———— 0x19(ReadDTCInformation)
查看>>
跟我学UDS(ISO14229) ———— 0x87(LinkControl)
查看>>
跟我学UDS(ISO14229) ———— 0x2F(InputOutputControlByIdentifier)
查看>>
跟我学UDS(ISO14229) ———— 0x37(RequestTransferExit)
查看>>
LINUX基础指令
查看>>
c++学习总结---引用以及内联函数
查看>>
二进制中1的个数
查看>>
LeetCode101. 对称二叉树 (递归) + (迭代)
查看>>