本章节翻译自《Beginning-Android-4-Application-Development》,如有翻译不当的地方,敬请指出。
原书购买地址http://www.amazon.com/Beginning-Android-4-Application-Development/dp/1118199545/
Projections
managedQuery()的第二个参数(CursorLoader类的第三个参数)控制查询返回列的数量。之前的代码,传入的是null,就是把所有的列都取到。
Cursor c;
if (android.os.Build.VERSION.SDK_INT < 11) {
c = managedQuery(allContacts, null, null, null, null);
} else {
CursorLoader cursorLoader = new CursorLoader(this, allContacts,
null, null, null, null);
c = cursorLoader.loadInBackground();
}
可以创建一个数组,指定要查询哪些列。
Uri allContacts = ContactsContract.Contacts.CONTENT_URI;
String[] projection = new String[] { ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.Contacts.HAS_PHONE_NUMBER };
Cursor c;
if (android.os.Build.VERSION.SDK_INT < 11) {
c = managedQuery(allContacts, projection, null, null, null);
} else {
CursorLoader cursorLoader = new CursorLoader(this, allContacts,
projection, null, null, null);
c = cursorLoader.loadInBackground();
}
这样,就指定的需要查询的列:名字和是否有手机号。
Filtering
managedQuery()方法的第3和第4个参数(CursorLoader类的第4和第5个参数)。这两个参数指定了SQL语句中的WHERE条件,进行条件查询。
举个例子,下面的代码返回名字以"三"为结尾的联系人。
Uri allContacts = ContactsContract.Contacts.CONTENT_URI;
String[] projection = new String[] { ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.Contacts.HAS_PHONE_NUMBER };
Cursor c;
if (android.os.Build.VERSION.SDK_INT < 11) {
c = managedQuery(allContacts, projection,
ContactsContract.Contacts.DISPLAY_NAME + " LIKE ?",
new String[] { "%三" }, null);
} else {
CursorLoader cursorLoader = new CursorLoader(this, allContacts,
projection, ContactsContract.Contacts.DISPLAY_NAME
+ " LIKE ?", new String[] { "%三" }, null);
c = cursorLoader.loadInBackground();
}
经查询,会返回“张三”。
Sorting
managedQuery()和CursorLoader的最后一个参数。这个参数指定了SQL语句的ORDER BY条件,进行结果排序。
下面的代码对联系人进行名字的升序排列。
Uri allContacts = ContactsContract.Contacts.CONTENT_URI;
String[] projection = new String[] { ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.Contacts.HAS_PHONE_NUMBER };
Cursor c;
if (android.os.Build.VERSION.SDK_INT < 11) {
c = managedQuery(allContacts, projection,
ContactsContract.Contacts.DISPLAY_NAME + " LIKE ?",
new String[] { "%三" },
ContactsContract.Contacts.DISPLAY_NAME + " ASC");
} else {
CursorLoader cursorLoader = new CursorLoader(this, allContacts,
projection, ContactsContract.Contacts.DISPLAY_NAME
+ " LIKE ?", new String[] { "%三" },
ContactsContract.Contacts.DISPLAY_NAME + " ASC");
c = cursorLoader.loadInBackground();
}
分享到:
相关推荐
这些库可以帮助我们将汉字转换为对应的拼音,然后我们可以使用转换后的拼音进行排序和过滤。在实际操作中,我们可能需要处理多音字和特殊字符的问题,确保转换的准确性。 以下是实现步骤概述: 1. 数据准备:获取...
本教程将深入探讨如何实现ListView的A-Z字母排序和过滤搜索功能,并介绍如何将汉字转换为拼音,以支持按拼音首字母进行快速定位和筛选。 一、ListView基础 ListView是Android中的一个视图容器,它可以动态加载和...
在Android开发中,ListView是一种常用的组件,用于展示大量的列表数据。在实际应用中,我们经常需要对ListView的数据进行A-Z字母排序,以便用户能够更快速地查找和浏览内容。本教程将详细介绍如何在Android中实现...
以上就是实现ListView字母过滤排序和搜索功能的主要步骤和知识点。在实际开发中,还需要考虑用户体验、性能优化等多方面因素,确保功能的稳定性和效率。通过熟练掌握这些技巧,可以让你的Android应用更加易用和高效...
这篇教程“android 通讯录(A-Z)带可模糊查询搜索框”着重讲解如何创建一个能够进行字母索引排序和模糊查询的通讯录界面。在这个过程中,开发者会接触到Android的UI设计、数据处理以及搜索功能的实现。 首先,UI...
在Android开发中,ListView是一种常用的UI控件,用于展示大量数据列表。本教程将深入讲解如何在ListView中实现简单的过滤、排序等控制功能,以优化用户体验并提高数据管理效率。 首先,我们需要创建一个ListView的...
4. **查询数据**:使用 `SELECT` 语句从表中检索数据,可以结合 `WHERE` 条件、`GROUP BY` 分组、`ORDER BY` 排序和 `HAVING` 过滤。 5. **更新数据**:用 `UPDATE` 语句修改表中的数据,通常配合 `WHERE` 条件指定...
在Android开发中,ListView是一种常用的视图组件,用于展示大量数据列表。本教程将深入讲解如何实现一个按字母排序的ListView,并提供快速定位到特定字母的功能。这一特性常见于通讯录应用,用户可以通过点击字母栏...
在处理大量数据时,为了方便用户快速定位和查找,通常会实现A-Z字母排序和过滤搜索功能。本教程将详细介绍如何在ListView中实现这些特性,并结合汉字转成拼音的处理。 首先,我们创建一个名为`SortModel`的实体类,...
本教程将深入探讨如何实现ListView的字母排序和过滤搜索功能,以创建类似通讯录的效果。我们参考的项目是"SortedContactUI-master",它展示了如何实现这一第四种效果。 首先,理解ListView的基本原理至关重要。...
在Android开发中,`EditText`和`ListView`是两个非常重要的组件。`EditText`用于接收用户输入,而`ListView`则常用于展示大量的列表数据。本教程将详细讲解如何在`EditText`中输入内容时对`ListView`进行实时检索和...
本教程将深入探讨如何在ListView中实现A-Z字母排序和过滤搜索功能,以及如何将汉字转换为拼音,从而提升用户的交互体验。 一、A-Z字母排序 1. **拼音库的选择与集成**:首先,我们需要一个能够将汉字转换为拼音的...
综上所述,Android ListView的A-Z字母排序和筛选功能是通过数据排序和过滤机制来实现的。开发者需要理解Adapter、Comparable接口和Filterable接口的工作原理,并能灵活运用它们来优化用户体验。通过不断地实践和学习...
在Android开发中,实现用户友好且高效的检索功能是非常重要的。本文将详细介绍如何利用`EditText`与`ListView`来构建一个简单但实用的检索排序功能。通过这种方式,用户可以在`EditText`中输入关键词,系统则会实时...
在Android系统中,Launcher应用程序是用户与设备交互的首要界面,它负责展示并管理应用程序快捷方式、小部件以及主屏幕。...对于想要在Android开发领域提升自己的开发者来说,这是一个不可多得的学习资源。
本教程将详细介绍如何在ListView中实现字母排序和过滤搜索功能,提供一个完整的实例源码供参考。首先,我们来理解这两个功能的核心概念。 **一、字母排序** 1. **SectionIndexer接口**:在ListView中实现字母排序...
总结起来,"Android备忘录系统的开发"实例是一个全面的教程,涵盖了Android开发的多个核心领域,包括UI设计、数据存储、业务逻辑处理以及可能的网络同步。对于初学者来说,通过这个项目可以深入理解Android应用开发...
在Android开发中,提供高效的搜索和过滤功能是提升用户体验的关键因素之一。本教程将深入探讨如何在Android应用中实现一个字母自动检索的功能,这通常用于帮助用户快速定位和筛选列表中的内容。首先,我们将了解这一...
在Android开发中,ListView是常用的一种视图组件,用于展示大量可滚动的数据列表。本教程将详细介绍如何实现ListView的字母排序功能,使用户能够按字母顺序浏览数据源,提升用户体验。我们将主要关注以下几点: 1. ...