接着上一篇实现一个带有复选框的列表视图,这要求对Adapter有比较清楚的理解。
1. ArrayAdapter从Layout读取TextView控件,返回给ListView显示,这个处理在ArrayAdapter的getView方法里,我们可以继承这个类,覆盖getView,改成读取CheckBox控件,看下面的代码:
CheckListView.java
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> 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
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> 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. 运行程序看效果:
分享到:
相关推荐
口袋笔记-- 一个简单的记事本app,具有多色彩主题,自带日历视图,记事可以是列表显示也可以是网格显示,提醒功能,隐私保护功能等。项目地址:https://github.com/channguyen/pocket-note-android 效果图:
3. 处理空列表情况:可以添加一个空视图,当数据为空时显示。 总结来说,Android中的ListView是通过Adapter机制实现数据和视图的绑定。开发者需要创建Adapter子类,处理数据与视图之间的映射,并在MainActivity中...
本自学笔记将重点讲解如何在Android项目中创建并使用ListView,包括基本的设置、数据绑定和适配器的使用。 首先,我们需要在布局文件中添加ListView元素。在XML布局文件中,通过`<ListView>`标签定义ListView,可以...
- **用户界面**: 使用Android Studio的布局编辑器设计用户界面,包括输入框、按钮和列表视图等。 - **事件监听**: 为UI元素设置监听器,响应用户的操作,如点击按钮保存笔记。 - **Intent**: Android系统中的消息...
6. UI设计和组件:Android平台提供了丰富的UI组件,如按钮、文本框、列表视图等,开发者可以利用这些组件创建直观、易用的用户界面。 7. 应用开发实践:通过实例演示和样例代码,教程将教授如何开发一个Android应用...
除了核心的MVP架构,此应用还会用到Android的一些关键组件,例如`Activity`作为应用程序的主要入口点,`Intent`用于启动其他组件或传递数据,`RecyclerView`用于显示笔记列表,`Adapter`将数据绑定到列表视图,`...
同时,可能还用到了EditText用于输入笔记内容,Button用于触发操作,RecyclerView或者ListView用于显示笔记列表。通过适配器(Adapter)将数据与视图绑定,可以动态加载和更新列表内容。 此外,事件监听和回调机制...
3. **查询数据**:通过query()方法,可以根据特定条件获取数据库中的笔记。例如,获取所有笔记: ```java public List<Diary> getAllDiaries() { List<Diary> diaryList = new ArrayList(); Cursor cursor = db....
在Android开发中,Spinner是一个非常重要的基本视图组件,它为用户提供了一个下拉选择菜单,通常用于展示一组有限的选项。本篇学习笔记将深入探讨Spinner的使用、工作原理以及如何自定义它来满足特定需求。 一、...
使用Android Studio内置的布局编辑器(XML)设计笔记APP的用户界面,通常包括主界面、笔记列表视图、笔记详情视图以及添加/编辑笔记的界面。可以利用RecyclerView展示笔记列表,EditText用于输入笔记内容,Button...
在这个demo中,可能会看到如何在ListView中显示SQLite数据库中的笔记列表,包括设置适配器,处理点击事件等。 在这个"Android记事本-demo"中,开发者可能还会涉及到UI设计,使用XML布局文件创建界面,以及使用...
6. `Android_L_Notes.psd`:代表笔记应用的设计,可能包含笔记列表、新建笔记的界面,以及编辑和查看笔记的功能。 7. `Android_L_Travel.psd`:可能是一个旅行相关的界面,如行程规划、目的地介绍等,可能包含地图...
标题和描述提及了“新版Android开发教程+笔记七--基础UI编程1”,以及“安卓开发必备”,因此本篇内容将主要围绕Android基础UI编程展开。 Android UI编程是构建Android应用界面的核心部分。它涉及到使用各种布局和...
当需要在一个视图中展示列表数据时,适配器起着桥梁作用,它将数据集转换成可显示的视图列表,如ListView、RecyclerView等。适配器可以是ArrayAdapter、CursorAdapter等,它们根据不同的数据源来填充视图。 9. **...
同时,这份笔记可能还会涵盖如何使用Adapter来连接数据源和ListView、RecyclerView等列表视图,实现数据的动态加载和滚动效果。 最后,"新版Android开发教程&笔记四--Dalvik ADB.pdf"讲解了Dalvik虚拟机和Android ...
首先,DroidDraw提供了丰富的预定义组件,如按钮、文本框、图像视图、列表视图等,这些都是构建Android应用界面的基本元素。开发者可以通过选择这些组件,直接在设计画布上放置,省去了手动编写布局XML的繁琐步骤。 ...
Android提供了丰富的UI组件,如按钮(Button)、文本框(EditText)、列表视图(ListView)、网格视图(GridView)等。通过组合这些组件,开发者可以创建出复杂的用户交互。 六、事件处理 Android使用监听器...
【Android代码-Knote】是关于开发一款名为Knote的简单Android笔记应用的源代码库。这个项目主要关注Android平台上的应用程序开发,旨在提供一个轻量级、用户友好的笔记工具。下面将详细介绍在这个项目中涉及的...
TimeBar通常是指一种时间轴视图,用于展示和导航与时间相关的数据,比如笔记的创建或修改日期。 【描述分析】 描述提到,这是一个包含多个文件的压缩包,可能包含了源代码、资源文件和其他必要的构建元素。由于“太...
3. **UI设计**:通过XML布局文件创建用户界面,包括按钮、输入框、文本视图等组件。 4. **Intent**:理解意图 Intent 的作用,如何用它来启动新活动或传递数据。 5. **SQLite数据库**:学习如何在Android中使用...