接着上一篇实现一个带有复选框的列表视图,这要求对Adapter有比较清楚的理解。
1.  ArrayAdapter从Layout读取TextView控件,返回给ListView显示,这个处理在ArrayAdapter的getView方法里,我们可以继承这个类,覆盖getView,改成读取CheckBox控件,看下面的代码:
CheckListView.java

    class CheckArrayAdapter<T> extends ArrayAdapter<T>
    {
        public CheckArrayAdapter(Context context, int checkBoxResId,
                T[] objects)
        {
            super(context, checkBoxResId, objects);
        }

public CheckArrayAdapter(Context context, int checBoxResId)
        {
            super(context, checBoxResId);
        }
        
        public View getView(int position, View convertView, ViewGroup parent, int resource)
        {
            CheckBox checkBox;

if (convertView == null)
                checkBox = (CheckBox)LayoutInflater.from(getContext()).inflate(resource, parent, false);
            else
                checkBox = (CheckBox)convertView;
            
            T item = getItem(position);
            if (item instanceof CharSequence)
                checkBox.setText((CharSequence) item);
            else
                checkBox.setText(item.toString());

return checkBox;
        }
    }

2.  前一篇的CheckListView类改为从ListActivity继承,ListActivity默认以ListView为根视图,因此不需要Layout文件以及调用setContentView。
CheckListView.java

    public class CheckListView extends ListActivity
    {
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            
            CheckArrayAdapter<String> adapter = new CheckArrayAdapter<String>(
                    this, R.layout.checkbox_item, mStrList);
            getListView().setAdapter(adapter);
            getListView().setOnItemClickListener(new AdapterView.OnItemClickListener()
            {

@Override
                public void onItemClick(AdapterView<?> parent, View view, int pos,
                        long id)
                {
                    ListView listView = (ListView)parent;
                    CheckBox checkBox = (CheckBox)listView.getChildAt(pos);
                    checkBox.setChecked(!checkBox.isChecked());
                }
            });
            getListView().setSelection(2);
        }
        
        private String [] mStrList = 
        {
            "Hello1",
            "Hello2",
            "Hello3"
        };
    }

    在onCreate里,我们创建一个CheckArrayAdapter,其构造函数要求传入一个以CheckBox为根视图的Layout文件ID,怎么样创建Layout已经非常熟悉,不再描述。不过创建了Layout后需要对CheckBox设一个属性,将Focusable设为False,只有这样,ListView才能得到按键事件,才能触发OnItemClickListener。
    调用getListView()将返回ListActivity里的ListView控件。
    在ItemClick事件,切换CheckBox的选中状态。
3.  运行程序看效果:
    

转载于:https://www.cnblogs.com/lingo/archive/2010/04/04/1704385.html

【Android笔记】如何创建列表视图3相关推荐

  1. 安卓学习笔记5.6—列表视图

    目录 零.学习目标 一.列表视图概述 (一)继承关系图 (二)列表视图四要素 (三)四种适配器 二.基于数组适配器使用列表视图案例 -- 阅读古诗 (一)数组适配器 (二)涉及知识点 (三)实现步骤 ...

  2. android开发基础_列表视图一(List View)

    官网解释: a view that shows items in a verically list,The items come from the ListAdapter associated wit ...

  3. Office365学习笔记—Xslt自定义列表视图

    1,在Office365中需要添加自定义的视图!用Spd添加视图,这儿我添加一个testView! (1)打开testView.aspx将</ZoneTemplate>节点中的内容全部删除 ...

  4. 学会在Android Studio里使用列表视图制作通讯录

    简单适配器案例 - 通讯录 1.新建安卓项目 基于- Empty Activity模板创建安卓应用 - ContactsList 2.准备图片和背景素材 将图片和背景素材拷贝到- drawable目录 ...

  5. 安卓学习笔记14:列表视图

    文章目录 1.创建安卓应用[ReadAncientPoetry] 2.将背景图片拷贝到drawable目录 3.布局资源文件activity_main.xml 4.诗歌列表项模板poem_list_i ...

  6. android可点击的列表,如何在Android的可扩展列表视图中的子点击...

    正如edwin所说,您可以制作一个Costum适配器.您可以在其中在每个View上使用setOnClickListner()方法.就像我在这里一样 class CustomAdapter extend ...

  7. android 复杂的列表视图新写法MultiType

    从前,比如我们写一个类似微博列表页面,这样的列表是十分复杂的:有纯文本的.带转发原文的.带图片的.带视频的.带文章的等等,甚至穿插一条可以横向滑动的好友推荐条目.不同的 item 类型众多,而且随着业 ...

  8. 学习安卓开发第七天【网格视图qq相册页面】【下拉;列表框】【下拉列表框实例】【列表视图】

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  9. linux sort -w32,WIN32汇编: 31.列表视图控件

    第三十一课 列表视图控件 本课中我们将学习如何创建和使用列表视图控件. 理论: 列表视图控件和树型视图.丰富文本编辑控件一样是通用控件的一种.可能您都已经知道了列表视图控件,只不过是不知道它的确切名字 ...

最新文章

  1. No module named keras.engine.base_layer
  2. 聊聊身边的嵌入式,乘风破浪的比特币
  3. filestorage 修改吧部分数据_数据库系统概论课后答案||第五版
  4. XML:体验学习的乐趣之XML总结
  5. .NET :在Visual Studio的不同Tab之间切换
  6. Paxos 算法详解
  7. 联想ibm服务器修改uefi,解决联想笔记本bios设置uefi变灰色的方法
  8. xlsxwriter php,xlsxwriter(PHP工作表插件)
  9. oracle11g数据备份,oracle11g备份还原
  10. Android 12 灭屏流程(一) Power键灭屏
  11. 身份证、组织机构代码及营业执照号校验函数
  12. 到底是什么原因?让200多家企业参与区块链改革?
  13. 英雄联盟全球总决赛历届冠军名单
  14. 【Python web 开发】 bottle 简单教程 (四)
  15. Geany的所有主题文件
  16. cms系统是什么,用哪个比较好。
  17. Citric I 模拟赛心得
  18. [励志]知乎热门:做事情三分钟热度怎么破?
  19. 张博涵清华大学_清华大学人文学院
  20. R基础学习(一)数据结构

热门文章

  1. 硬件:固态硬盘SSD的基础知识及安装注意事项!
  2. 数据库:Redis数据库优点介绍
  3. android studio 工程demo例子,Android Studio 实现跑马灯微项目实例
  4. 树莓派入门(树莓派登录的几种方式)
  5. java定时线程池_java 定时器线程池(ScheduledThreadPoolExecutor)的实现
  6. Android 第九课 常用控件-------ListView
  7. 404 错误页面_如何设计404错误页面,以使用户留在您的网站上
  8. JSONObject中optString和getString等的区别
  9. easyui datagrid plunges 扩展 插件
  10. 转:编写高效的Android代码