Android ListView 自定义 Adapter
自定义Adapter类
public class ListViewAdapter extends BaseAdapter {
private static final String TAG = MainActivity.class.getName();
private Context context; // 运行上下文
private List<Map<String, Object>> listItems; // 商品信息集合
private LayoutInflater listContainer; // 视图容器
public final class ListItemView { // 自定义控件集合
public ImageView image_status;
public TextView text_storage;
public TextView text_device;
public TextView text_temperature;
public TextView text_humidity;
public TextView text_updatetime;
}
public ListViewAdapter(Context context, List<Map<String, Object>> listItems) {
this.context = context;
this.listContainer = LayoutInflater.from(this.context); // 创建视图容器并设置上下文
this.listItems = listItems;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
Log.i(TAG, "getCount:" + listItems.size());
return listItems.size();//获取数量
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
Log.i(TAG, "getView");
// 自定义视图
ListItemView listItemView = null;
if (convertView == null) {
listItemView = new ListItemView();
// 获取list_item布局文件的视图
convertView = listContainer.inflate(R.layout.list_item, null);
listItemView.image_status = (ImageView) convertView
.findViewById(R.id.item_image_status);
listItemView.text_storage = (TextView) convertView
.findViewById(R.id.item_text_storage);
listItemView.text_device = (TextView) convertView
.findViewById(R.id.item_text_device);
listItemView.text_temperature = (TextView) convertView
.findViewById(R.id.item_text_temperature);
listItemView.text_humidity = (TextView) convertView
.findViewById(R.id.item_text_humidity);
listItemView.text_updatetime = (TextView) convertView
.findViewById(R.id.item_text_updatetime);
// 设置文字和图片
listItemView.image_status.setBackgroundResource((Integer) listItems
.get(position).get("image"));
listItemView.text_storage.setText((String) listItems.get(position)
.get("storage"));
listItemView.text_device.setText((String) listItems.get(position)
.get("device"));
listItemView.text_temperature.setText((String) listItems.get(
position).get("temperature"));
listItemView.text_humidity.setText((String) listItems.get(position)
.get("humidity"));
listItemView.text_updatetime.setText((String) listItems.get(
position).get("updatetime"));
convertView.setTag(listItemView);
} else {
listItemView = (ListItemView) convertView.getTag();
}
return convertView;
}
}
自定义布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<ImageView
android:id="@+id/item_image_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/item_text_storage"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/item_text_device"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/item_text_temperature"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/item_text_humidity"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/item_text_updatetime"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
调用自定义Adapter方法
private void initListView() {
data_listview = (ListView) findViewById(R.id.data_listview);
listItems = getListItems();
listadapter = new ListViewAdapter(this, listItems);
Log.i(TAG, "setAdapter");
data_listview.setAdapter(listadapter);
}
private List<Map<String, Object>> getListItems() {
List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>();
for (int i = 0; i < 10; i++) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("image", R.drawable.ic_logo);
map.put("storage", "仓库");
map.put("device", "设备");
map.put("temperature", "温度");
map.put("humidity", "湿度");
map.put("updatetime", "上传时间");
listItems.add(map);
}
return listItems;
}
Android ListView 自定义 Adapter的更多相关文章
- Android ListView自定义Adapter使用误区
参考博客:BaseAdapter中重写getview的心得以及发现convertView回收的机制 使用自定义的BaseAdapter实现LIstView的展示 由于Recycler(反复循环器)的机 ...
- [Android] Android RecycleView和ListView 自定义Adapter封装类
在网上查看了很多对应 Android RecycleView和ListView 自定义Adapter封装类 的文章,主要存在几个问题: 一).网上代码一大抄,复制来复制去,大部分都运行不起来,或者 格 ...
- Android listview与adapter用法(BaseAdapter + getView)
Android listview与adapter用法http://www.cnblogs.com/zhengbeibei/archive/2013/05/14/3078805.html package ...
- Android学习----自定义Adapter实现ListView
前言: 对于ListView而言,自定义的Adapter对于显示复杂的界面有很大的灵活性 .使用自定义的Adapter需要继承BaseAdapter,然后重写getCount(),getView(), ...
- Android listview与adapter用法
listview与adapter用法 博客分类: android 一个ListView通常有两个职责. (1)将数据填充到布局. (2)处理用户的选择点击等操作. 第一点很好理解,ListView ...
- 【转】Android listview与adapter用法
一个ListView通常有两个职责. (1)将数据填充到布局. (2)处理用户的选择点击等操作. 第一点很好理解,ListView就是实现这个功能的.第二点也不难做到,在后面的学习中读者会发现,这非常 ...
- 【转】Android之自定义Adapter的ListView
http://www.cnblogs.com/topcoderliu/archive/2011/05/07/2039862.html 在开发中,我们经常使用到ListView这个控件.Android的 ...
- Android之自定义Adapter的ListView
ListView的创建,一般要具备两大元素: 1)数据集,即要映射的字符串.图片信息之类. 2)适配器,实现把要映射的字符串.图片信息映射成视图(如Textview.Image等组件),再添加到Lis ...
- Android ListView 和 ***Adapter 从本地/网络获取歌曲列表
本文内容 环境 项目结构 测试数据 演示 1:SimpleAdapter 演示 2:BaseAdapter 演示 3:CustomLazyList 演示 4:CustomLazyCompleteLis ...
随机推荐
- [转] How to generate multiple outputs from single T4 template (T4 输出多个文件)
本文转自:http://www.olegsych.com/2008/03/how-to-generate-multiple-outputs-from-single-t4-template/ Updat ...
- [APAC]导入图片至Word,然后按规则命名(2/2)
#将所有docx文件改成可读 Set-ItemProperty -Path "e:\screenshot\*.docx" -Name IsReadOnly -Value $fals ...
- php数组操作,删除第一个和最后一个元素
对于一个php数组,该如何删除该数组的第一个元素或者最后一个元素呢?其实这两个过程都可以通过php自带的函数 array_pop 和 array_shift 来完成,下面就具体介绍一下如何来操作. ( ...
- Web 在线文件管理器学习笔记与总结(2)显示文件列表(名称,类型,大小,可读,可写,可执行,创建时间,修改时间,访问时间)
主要函数: filetype() 判断文件类型 filesize() 得到文件大小(字节) is_readable() 判断文件是否可读 is_writeable() 判断文件是否可写 is_exec ...
- ecshop 完美解决动态ip登录超时和购物车清空问题
ecshop 完美解决动态ip登录超时和购物车清空问题 ECSHOP模板/ecshop开发中心(www.68ecshop.com) / 2014-05-06 前一段时间,ECSHOP开发中心的一个客户 ...
- Java:按值传递还是按引用传递详细解说
前天在做系统的时候被Java中参数传递问题卡了一下,回头查阅了相关的资料,对参数传递问题有了新的了解和掌握,但是有个问题感觉还是很模糊,就是Java中到底是否只存在值传递,因为在查阅资料时,经常看到有 ...
- The Producer-Consumer Relationship
//Listing 3-1. The Producer-Consumer Relationship Version 1 public class PC { public static void mai ...
- 【重要】ASCII码表
我们在做业务项目,客户端的输入总是无法控制,有各种各样的特殊字符,这些特殊字符就要借助ASCII码表才能判断,所以我做了一张图,方便查看 为什么要搞个表出来,下面的字符串中,你看看你能否看的出来是什么 ...
- day11
JSP入门 1 JSP概述 1.1 什么是JSP JSP(Java Server Pages)是JavaWeb服务器端的动态资源.它与html页面的作用是相同的,显示数据和获取数据. 1.2 ...
- mysql创建外键出错(注意数据库表字段排序)
1. 两个字段的类型或者大小不严格匹配.例如,如果一个是int(10),那么外键也必须设置成int(10),而不是int(11),也不能是tinyint.另外,你还必须确定两个字段是否一个为 sig ...