Android中的ListView和Adapter
2016-05-21 13:26
387 查看
1.ListView
ListView是一个含有众多列表项的一个控件,它用来在android中展示列表。数据适配器:作用是将复杂的数据填充在指定界面上。
ArrayAdapter :用于绑定单一格式的数据--->数组或集合。
SimpleAdapter:用于绑定复杂格式的数据。(一般会自定义item项)
实现过程 :1.新建适配器 2.添加数据源到适配器 3.视图加载适配器
2.ArrayAdapter的实现过程
1. 新建一个适配器ArrayAdapter adapter = new ArrayAdapter(context,resource,object);
在这里 context代表上下文对象 resource代表加载到每一个列表项的布局文件 object代表数据源
2. 这里布局可以采用系统自带的布局管理器android.R.layout.simple_list_item_1 从simple_list_item_1源码可以看出 其实是一个定义了TextView的布局文件
//源码如下
<TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" android:layout_width="match_parent" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceListItemSmall" android:gravity="center_vertical" android:paddingStart="?android:attr/listPreferredItemPaddingStart" android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" android:minHeight="?android:attr/listPreferredItemHeightSmall" />
3.这里的数据源数据可以是一个数组 也可以是一个List集合
代码如下:
public class MainActivity extends Activity { private ListView lv; private ArrayAdapter<String> arr_adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (ListView) findViewById(R.id.ListView); String[] arr_data = { "HelloWorld1", "HelloWorld2", "HelloWorld3", "HelloWorld4", "HelloWorld5", "HelloWorld6","HelloWorld7" }; // 1.新建一个适配器 // 2.新建数据源 // 3.将数据源加载到adapter中 arr_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arr_data); lv.setAdapter(arr_adapter); }
3.SimpleAdapter的实现过程
基本步骤同上1.新建适配器
SimpleaDapter = new SimpleAdapter(context, data, resource, from, to);
这里的1> context是上下文对象 2> data是数据源 3> resource是列表项的布局文件ID 4> from Map中的键名 5> to 绑定视图中的ID与from成对应关系
其中 data数据源格式是 List<?extends Map<Key,Value>> 每一个Map都会对应ListView列表项中的一个 每一个Map(键值对)中的键必须包含所在from中所指定的键
2.设置item项的布局文件
<?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="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:weightSum="4" > <ImageView android:id="@+id/ImageView" android:layout_width="0dp" android:layout_height="50dp" android:layout_weight="1" android:contentDescription="@string/str_icon" android:src="@drawable/ic_launcher" /> <TextView android:id="@+id/Tv" android:layout_width="0dp" android:layout_height="50dp" android:layout_weight="3" android:gravity="center" android:text="@string/str_likeu" /> </LinearLayout> </LinearLayout>
3.具体实现
public class MainActivity extends Activity { private ListView lv; private SimpleAdapter simple_adapter; private ArrayList<Map<String, Object>> list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (ListView) findViewById(R.id.ListView); /** * context 上下文对象 * data 数据源 (List<? extends Map<String, ?>>data) 一个Map所组成的List集合 * 每一个Map都会对应ListView列表项中的一个 * 每一个Map(键值对)中的键必须包含所在from中所指定的键 * resource 列表项的布局文件ID * from Map中的键名 * to 绑定数据视图中的ID与from成对应关系 */ list = new ArrayList<Map<String, Object>>(); simple_adapter = new SimpleAdapter(this, getData(), R.layout.item_list, new String[]{"ImageView","Tv"}, new int[]{R.id.ImageView,R.id.Tv}); lv.setAdapter(simple_adapter); } private ArrayList<Map<String, Object>> getData() { for(int x = 0; x < 10; x ++){ Map<String,Object> map = new HashMap<String,Object>(); map.put("ImageView", R.drawable.love); map.put("Tv", "我不喜欢全世界,我只喜欢你!"); list.add(map); } return list; } }
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
相关文章推荐
- 完美实现Android ListView中的TextView的跑马灯效果
- android上改变listView的选中颜色
- Delphi7中Listview的常用功能汇总
- Delphi控件ListView的属性及使用方法详解
- android中ListView数据刷新时的同步方法
- Android提高之ListView实现自适应表格的方法
- Android中实现水平滑动(横向滑动)ListView示例
- Android ListView分页功能实现方法
- C#实现ListView选中项向上或向下移动的方法
- C#下listview如何插入图片
- Listview加载的性能优化是如何实现的
- C#实现listview Group收缩扩展的方法
- C# listview添加combobox到单元格的实现代码
- ListView 百分比进度条(delphi版)
- Android listview多视图嵌套多视图
- ListView Adapter优化 实例
- Android用ListView显示SDCard文件列表的小例子
- Adapter实现ListView带多选框等状态的自定义控件的注意事项
- asp.net ListView 数据绑定
- Android之ScrollView嵌套ListView和GridView冲突的解决方法