Android Adapter在ListView中的运用
来源:互联网 发布:淘宝店铺不装修可以吗 编辑:程序博客网 时间:2024/06/02 12:23
列表视图(ListView)在Android中非常常用,创建一个ListView分为两步:
一:创建ListView;
二:用setAdapter给ListView添加内容。
列表的每一项(item)中既可以包含简单的文字内容,也可以包含复杂的图片、文字、图形等的复杂布局。复杂的混合布局需要使用Map进行封装成一个整体作为一项。下面分别介绍。
一、简单文字布局的ListView
1.效果:
2.代码:
(1)MainActivity.java
package org.wp.adapter01;import java.util.ArrayList;import android.app.Activity;import android.os.Bundle;import android.widget.ArrayAdapter;import android.widget.ListView;public class MainActivity extends Activity {private ListView mlistview = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 获取ListView组件mlistview = (ListView) super.findViewById(R.id.listview);// 给LIstView设定适配器(给ListView填充数据)/* ArrayAdapter的三个参数 : 1.上下文,即此Activity类 2.布局,使用的是系统自带的simple_list_item布局的一种,包括五种 3.ArrayList数据 */mlistview.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, getListData()));}private ArrayList<String> getListData() {// 定义数据组mListArrayList<String> mList = new ArrayList<String>();// 向mList中添加3条数据mList.add("项目1");mList.add("项目2");mList.add("项目3");return mList;}}
(2)activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="org.wp.adapter01.MainActivity" > <!-- 在布局中加入ListView --> <ListView android:id="@+id/listview" android:layout_width="fill_parent" android:layout_height="wrap_content" /></LinearLayout>
3.知识
每个列表项都是一个普通的TextView
simple_list_item_2
每个列表项都是一个普通的TextView(字体稍大)
simple_list_item_checked
每个列表项都是一个已勾选的列表项
simple_list_item_multiple_choice
每个列表项都是一个带多选框的文本
simple_list_item_single_choice
每个列表项都是一个带单选按钮的文本
二、文字图片混合布局的ListView
1.效果:
2.代码:
(1)MainActivity.java
package org.wp.adapter02_simp;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.os.Bundle;import android.widget.ListView;import android.widget.SimpleAdapter;public class MainActivity extends Activity {private ListView mlistview = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mlistview = (ListView) super.findViewById(R.id.listview);// 定义SimpleAdapter(传入5个参数)SimpleAdapter madapter = new SimpleAdapter(this // 父容器, getListData() // 列表项, R.layout.itemlayout // 第五个参数组件来自于该布局界面, new String[] { "province", "city" ,"image"} // 列表项数据的key, new int[] { R.id.text1, R.id.text2, R.id.image}); // 列表项key对应的数据// 设置ListView的适配器mlistview.setAdapter(madapter);}private ArrayList<Map<String, Object>> getListData(){// 定义数据组ArrayList<Map<String, Object>> mlist = new ArrayList<Map<String, Object>>();String[] province = new String[] { "湖北", "江西", "广东" ,"广东"};String[] city = new String[] { "武汉", "南昌", "广州" ,"深圳"};int[] imageId = new int[] { R.drawable.wuhan,R.drawable.nanchang, R.drawable.guangzhou ,R.drawable.shenzhen};// 每循环一次就想列表中添加一条数据for (int i = 0; i < 4; i++) {// 定义HashMap封装数据HashMap<String, Object> item = new HashMap<String, Object>();item.put("province", province[i]);item.put("city", city[i]);item.put("image", imageId[i]);// 将一条封装好的item加入到列表中mlist.add(item);}return mlist;}}
(2)activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#97D800" android:orientation="vertical" tools:context="org.wp.adapter02_simp.MainActivity" > <!-- 布局中定义一个ListView --> <ListView android:id="@+id/listview" android:layout_width="fill_parent" android:layout_height="wrap_content" /></LinearLayout>
(3)itemlayout.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <!-- 左边的垂直布局,放两个TextView --> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:id="@+id/text1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="3dp" android:textColor="#FFFFFF" android:textSize="25sp" /> <TextView android:id="@+id/text2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="3dp" android:textColor="#FFFFFF" android:textSize="25sp" /> </LinearLayout> <!-- 右边放一张图片 --> <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="2dp" /></LinearLayout>
小建议:每一项的item布局(即itemlayout.xml的内容)也可以直接写在activity_main.xml中,因为在java文件中使用时是通过id来查找的,但是个人建议新建一个xml布局文件,这样一个item作为一个整体,修改时思路也比较清晰,同时不会影响到activity_main.xml主布局的直观,就这样了。。
0 0
- Android Adapter在ListView中的运用
- android listview中的adapter
- Android中的ListView和Adapter
- android 中ListView中的adapter详解
- Android中的listview的adapter自定义适配器
- Android ListView 中的Adapter 优化 缓存 getContext()
- Android中的ListView和Adapter的使用
- android Adapter综合使用(ArrayAdapter、SimpleAdapter、BaseAdapter在ListView和GridView中的使用)
- 最常用的Java设计之一 观察者模式 在android中的实例 ListView Adapter机制
- Android ListView Adapter
- Android ListView重写Adapter
- android开发--ListView&Adapter
- Android-关于一个界面同级中需要两个listView时,一个ListView被嵌套在ScrollView中,ListView的适配器adapter中的getView执行次数重复问题
- Adapter(适配器)在android中的应用
- android开发--详解ListView,动态添加,删除Adapter中的数据项
- 【Android】ListView开发中Adapter使用Activity中的方法
- Android通过Adapter获取ListView中的多选内容
- android中ListView或GridView出现在adapter中的getView出现多次position为0的情况
- 【LeetCode】Merge Two Sorted Lists & Merge k Sorted Lists
- zoj 2710 Two Pipelines
- linux pthread_cond_timedwait() 线程同步
- OC语言NSString方法的总结(全)
- 【POJ】【P2774】【Long Long Message】【题解】【hash】
- Android Adapter在ListView中的运用
- centos android 相关软件网址
- poj 2828
- json字符串和java对象的互相转换
- java学习进度
- HDU4861
- 快播总经理外逃110天被捕 涉传播淫秽信息
- Linux系统与Windows系统的不同之处
- 2014.8.15模拟赛【公主的工作】&&bzoj1046[HAOI2007]上升序列