自定义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的更多相关文章

  1. Android ListView自定义Adapter使用误区

    参考博客:BaseAdapter中重写getview的心得以及发现convertView回收的机制 使用自定义的BaseAdapter实现LIstView的展示 由于Recycler(反复循环器)的机 ...

  2. [Android] Android RecycleView和ListView 自定义Adapter封装类

    在网上查看了很多对应 Android RecycleView和ListView 自定义Adapter封装类 的文章,主要存在几个问题: 一).网上代码一大抄,复制来复制去,大部分都运行不起来,或者 格 ...

  3. Android listview与adapter用法(BaseAdapter + getView)

    Android listview与adapter用法http://www.cnblogs.com/zhengbeibei/archive/2013/05/14/3078805.html package ...

  4. Android学习----自定义Adapter实现ListView

    前言: 对于ListView而言,自定义的Adapter对于显示复杂的界面有很大的灵活性 .使用自定义的Adapter需要继承BaseAdapter,然后重写getCount(),getView(), ...

  5. Android listview与adapter用法

    listview与adapter用法 博客分类: android   一个ListView通常有两个职责. (1)将数据填充到布局. (2)处理用户的选择点击等操作. 第一点很好理解,ListView ...

  6. 【转】Android listview与adapter用法

    一个ListView通常有两个职责. (1)将数据填充到布局. (2)处理用户的选择点击等操作. 第一点很好理解,ListView就是实现这个功能的.第二点也不难做到,在后面的学习中读者会发现,这非常 ...

  7. 【转】Android之自定义Adapter的ListView

    http://www.cnblogs.com/topcoderliu/archive/2011/05/07/2039862.html 在开发中,我们经常使用到ListView这个控件.Android的 ...

  8. Android之自定义Adapter的ListView

    ListView的创建,一般要具备两大元素: 1)数据集,即要映射的字符串.图片信息之类. 2)适配器,实现把要映射的字符串.图片信息映射成视图(如Textview.Image等组件),再添加到Lis ...

  9. Android ListView 和 ***Adapter 从本地/网络获取歌曲列表

    本文内容 环境 项目结构 测试数据 演示 1:SimpleAdapter 演示 2:BaseAdapter 演示 3:CustomLazyList 演示 4:CustomLazyCompleteLis ...

随机推荐

  1. HDU 1754 I Hate It(线段树单点更新区间最值查询)

    I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  2. jQuery 判断表单中多个 input text 中至少有一个不为空

    html: 名称1:<input class="seasoning_name" type="text" name="seasoning_name ...

  3. Android 调用资源字符串的几种方法

    在 Layout XML 调用字符串资源: <TextView android:layout_width="fill_parent" android:layout_heigh ...

  4. selenium测试套件

    1.测试套件测试套件,简单理解就是讲多个用例,装在一个容器里来同时执行完成. 2.测试套件分析 #coding=utf-8 import unittestimport BaiDuSearch,BaiD ...

  5. web_custom_request函数详解

    在LR中当使用HTML录制方式时,录制的脚本中主要由函数web_link().web_submit_form().web_url().web_submit_data()组成,当使用HTTP录制方式时, ...

  6. Linux环境PHP7.0安装

    原文地址:http://blog.csdn.net/21aspnet/article/details/47708763 PHP7和HHVM比较 PHP7的在真实场景的性能确实已经和HHVM相当, 在一 ...

  7. Memcached原理深度分析详解

    Memcached是 danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能.关于这个东 西,相信很多人都用过,本文意在通 ...

  8. Java反射机制深入研究

    ava 反射是Java语言的一个很重要的特征,它使得Java具体了“动态性”.   在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法? ...

  9. mysql 数据库封装类:返回索引、关联、字符串数组;分页查询封装类 :$page=new Page(表的总条数,每页的条数);$sql = "".$page->limit; echo $page->fpage();

    <?php class czy { public $host="localhost"; //地址 public $uid="root"; //用户名 pu ...

  10. Qt拖拽界面 (*.ui) 缩放问题及解决办法(在最顶层放一个Layout)

    问题 使用Qt Designer 设计的界面,在缩放的时候不能随着主窗口一起缩放. 解决办法 之前遇到这个问题的时候,都是直接重写resizeEvent接口来实现的,在自动生成的Ui_Widget或U ...