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 ...
随机推荐
- 开源top100
1.SwitchyOmega 项目简介:SwitchyOmega 是 SwitchySharp 的新版本.这是一个 Chrome 浏览器用来切换不同代理的插件.SwitchyOmega 初次安装时会检 ...
- JavaScript的My97Date日期工具类的使用
开发人员最喜欢的事情就是有工具然后拿来直接使用(. ~ .) 使用截图: 1.设置input标签 2.根据其DEMO文件,引入,进行事件处理 3.效果如图 4.效果如图 代码: <!DOCTYP ...
- HDU 2159 FATE(二维费用背包)
FATE Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- Tree Context Menu
Right click on a node to display context menu. My Documents Photos Program Files Intel Java Micros ...
- Nginx 笔记与总结(11)Nginx + php-fpm + MySQL 安装 ecshop
下载 ecshop (ECShop_V2.7.3_UTF8_release1106)安装包,解压之后把 upload 文件夹使用 ftp 传到服务器的 /usr/local/html 目录下,同时改名 ...
- thinkphp四种url访问方式详解
本文实例分析了thinkphp的四种url访问方式.分享给大家供大家参考.具体分析如下: 一.什么是MVC thinkphp的MVC模式非常灵活,即使只有三个中和一个也可以运行. M -Model 编 ...
- 通过SocketLog快速分析OneThink程序
通过SocketLog快速分析OneThink程序 http://www.thinkphp.cn/topic/10846.html 浏览:2332 发布日期:2014/02/08 分类:技术分享 ...
- wordpress为dashboard添加样式
function my_admin_theme_style() { wp_enqueue_style('my-admin-style', get_template_directory_uri() . ...
- P1018 乘积最大
开始定义状态f[i][j][k]为[i,j)区间插入k个括号,使用记忆化搜索,但是成功爆栈,得到4个mle #include <bits/stdc++.h> using namespace ...
- Python For Data Analysis -- NumPy
NumPy作为python科学计算的基础,为何python适合进行数学计算,除了简单易懂,容易学习 Python可以简单的调用大量的用c和fortran编写的legacy的库 Python科学计算的这 ...