大家好,又见面了,我是你们的朋友全栈君。
1. 前言
在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。
列表的显示需要三个元素:
1.ListVeiw:用来展示列表的View。
2.适配器:用来把数据映射到ListView上的中介。
3.数据:被映射的字符串,图片,或者基本组件。
2.listView的使用
<span style="font-size:14px;"><ListView
android:id="@+id/listView"
style="@style/listviewStyle"
android:longClickable="true"
android:clickable="true"></ListView></span>
这样就创建了一个空的列表,然后在.java文件中再填充数据,所以id是一定要设的。其中我提前设置了长按和单击属性为true,防止后续长按时事件和单击事件冲突。
。随着ListView
中内容的丰富,以上两种Adapter已经很难满足需要,因此现在一般使用自定义的Adapter来填充数据。暂且先介绍ArrayAdapter和SimpleAdapter,后面有时间再来写自定义Adapter。
最简单的Adapter,创建ArrayAdapter时需指定如下三个参数:
由于ArrayAdapter只能显示文字,功能实在有限,如果需要多填充一些内容的话指望不上,这时候可以使用SimpleAdapter。
第3个参数:该参数指定一个界面布局的ID。该界面布局指定每一个列表项的样式。
第4个参数:该参数应该是一个String[]类型的参数,该参数决定提取Map<String, ?>对象中哪些key对应的value来生成列表项。
第5个参数:该参数应该是一个int[]类型的参数,该参数决定填充哪些组件。
示例:
<span style="font-size:14px;"> final List<Map<String, Object>> data = new ArrayList<>(); final int[] image = new int[] {R.mipmap.apple, R.mipmap.banana, R.mipmap.cherry, R.mipmap.coco, R.mipmap.kiwi, R.mipmap.orange, R.mipmap.pear, R.mipmap.strawberry, R.mipmap.watermelon}; String[] name = new String[] {"Apple", "Banana", "Cherry", "Coco", "Kiwi", "Orange", "Pear", "Strawberry", "Watermelon"}; for (int i = 0; i < 9; i++) { Map<String, Object> temp = new LinkedHashMap<>(); temp.put("image", image[i]); temp.put("name", name[i]); data.add(temp); } final ListView listView = (ListView) findViewById(R.id.listView); final SimpleAdapter simpleAdapter = new SimpleAdapter(this, data, R.layout.item, new String[] {"image", "name"}, new int[] {R.id.image, R.id.name}); listView.setAdapter(simpleAdapter);</span>
R.layout.item文件的主要布局如下:
<span style="font-size:14px;"> <ImageView
android:id="@+id/image"
style="@style/image"
// android:src="@mipmap/apple"
android:layout_marginLeft="@dimen/margins"
android:scaleType="centerInside"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_centerVertical="true"/>
<TextView
android:id="@+id/name"
style="@style/textView"
android:layout_marginLeft="@dimen/margins"
android:gravity="center_vertical|left"
// android:text="Apple"
android:textColor="#D5000000"/></span>
可以看到,每个item中有一个图片image和文字name,这个layout用于规定ListView中每一个列表项的样式。SimpleAdapter中的第四个参数String数组与map的两个key对应,第五个参数int数组与这个layout中两个控件的id相对应,注意String[]数组与int[]数组中的值要一一对应,在这个示例中,key为name的value填充到id为name的TextView中。效果如下图所示:
3. ListView列表项的单击和长按
方法原型如下:
4. ListView数据更新
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/163283.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...