Android 检索到的数据不是按升序排列的吗?
我使用的是Android 2.1平台,当我尝试检索联系人的电子邮件时,我的模拟器中有7个联系人。它将正常工作,但不会按照我在联系人列表中保存的顺序工作。如果我使用新电子邮件创建了新联系人,它将转到最后一个。我正在使用此代码 代码Android 检索到的数据不是按升序排列的吗?,android,Android,我使用的是Android 2.1平台,当我尝试检索联系人的电子邮件时,我的模拟器中有7个联系人。它将正常工作,但不会按照我在联系人列表中保存的顺序工作。如果我使用新电子邮件创建了新联系人,它将转到最后一个。我正在使用此代码 代码 public class RetrieveData extends Activity { ListView lvItem; private Button btnAdd; String displayName="", emailAddress="", phoneNumb
public class RetrieveData extends Activity {
ListView lvItem;
private Button btnAdd;
String displayName="", emailAddress="", phoneNumber="";
ArrayList<String> contactlist=new ArrayList<String>();
ArrayAdapter<String> itemAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lvItem = (ListView)this.findViewById(R.id.listview);
btnAdd = (Button)this.findViewById(R.id.btn);
itemAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,contactlist);
lvItem.setAdapter(itemAdapter);
btnAdd.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
GetEmails();
}
});
}
private void GetEmails()
{
ContentResolver cr =getContentResolver();
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
while (cursor.moveToNext())
{
String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
Cursor emails = cr.query(Email.CONTENT_URI,null,Email.CONTACT_ID + " = " + id, null, null);
while (emails.moveToNext())
{
emailAddress = emails.getString(emails.getColumnIndex(Email.DATA));
contactlist.add(emailAddress);
itemAdapter.notifyDataSetChanged();
}
emails.close();
}
cursor.close();
}
}
<?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="vertical" >
<ListView
android:id="@+id/listview"
android:layout_width="fill_parent"
android:layout_height="288dp"
android:layout_weight="0.03" >
</ListView>
<Button
android:id="@+id/btn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Retrieve"
android:layout_weight="0.01" />
</LinearLayout>
公共类RetrieveData扩展活动{
列表视图项目;
专用按钮btnAdd;
字符串displayName=“”,emailAddress=“”,phoneNumber=“”;
ArrayList contactlist=新建ArrayList();
阵列适配器;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lvItem=(ListView)this.findViewById(R.id.ListView);
btnAdd=(按钮)this.findviewbyd(R.id.btn);
itemAdapter=new ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,contactlist);
lvItem.setAdapter(itemAdapter);
btnAdd.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){
获取电子邮件();
}
});
}
私人邮件()
{
ContentResolver cr=getContentResolver();
Cursor Cursor=cr.query(ContactsContract.Contacts.CONTENT_URI,null,null,null);
while(cursor.moveToNext())
{
String id=cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.\u id));
游标emails=cr.query(Email.CONTENT\u URI,null,Email.CONTACT\u ID+“=”+ID,null,null);
while(emails.moveToNext())
{
emailAddress=emails.getString(emails.getColumnIndex(Email.DATA));
联系人列表。添加(电子邮件地址);
itemAdapter.notifyDataSetChanged();
}
电子邮件。关闭();
}
cursor.close();
}
}
xml文件
public class RetrieveData extends Activity {
ListView lvItem;
private Button btnAdd;
String displayName="", emailAddress="", phoneNumber="";
ArrayList<String> contactlist=new ArrayList<String>();
ArrayAdapter<String> itemAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lvItem = (ListView)this.findViewById(R.id.listview);
btnAdd = (Button)this.findViewById(R.id.btn);
itemAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,contactlist);
lvItem.setAdapter(itemAdapter);
btnAdd.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
GetEmails();
}
});
}
private void GetEmails()
{
ContentResolver cr =getContentResolver();
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
while (cursor.moveToNext())
{
String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
Cursor emails = cr.query(Email.CONTENT_URI,null,Email.CONTACT_ID + " = " + id, null, null);
while (emails.moveToNext())
{
emailAddress = emails.getString(emails.getColumnIndex(Email.DATA));
contactlist.add(emailAddress);
itemAdapter.notifyDataSetChanged();
}
emails.close();
}
cursor.close();
}
}
<?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="vertical" >
<ListView
android:id="@+id/listview"
android:layout_width="fill_parent"
android:layout_height="288dp"
android:layout_weight="0.03" >
</ListView>
<Button
android:id="@+id/btn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Retrieve"
android:layout_weight="0.01" />
</LinearLayout>
如何解决它?在中的查询中使用orderBy
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
像
类似地,对于
降序
使用DESC在中的查询中使用orderBy
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
像
类似地,对于
降序
使用DESC,因为看起来您有两个嵌套的需求,所以看起来不容易实现在查询中提供order by的最佳解决方案。因此如果不可能,您可以尝试
可以使用Collections.sort对字符串的数组列表进行排序ArrayList
看起来您有两个嵌套的quire,所以要实现在查询中提供orderby的最佳解决方案似乎并不容易。因此如果不可能,您可以尝试
可以使用Collections.sort对字符串的数组列表进行排序ArrayList
检查下面的测试代码
package stack.examples;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
public class RetrieveData extends Activity {
ListView lvItem;
private Button btnAdd;
String displayName="", emailAddress="", phoneNumber="";
ArrayList<String> contactlist=new ArrayList<String>();
ArrayAdapter<String> itemAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lvItem = (ListView)this.findViewById(R.id.listView);
btnAdd = (Button)this.findViewById(R.id.btn);
itemAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,contactlist);
lvItem.setAdapter(itemAdapter);
btnAdd.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
GetEmails();
}
});
}
private void GetEmails()
{
ContentResolver cr =getContentResolver();
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
while (cursor.moveToNext())
{
String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
Cursor emails = cr.query(Email.CONTENT_URI,null,Email.CONTACT_ID + " = " + id, null, null);
while (emails.moveToNext())
{
emailAddress = emails.getString(emails.getColumnIndex(Email.DATA));
contactlist.add(emailAddress);
}
emails.close();
sortList(contactlist);
itemAdapter.notifyDataSetChanged();
}
cursor.close();
}
private static void sortList(List<String> aItems){
Collections.sort(aItems, String.CASE_INSENSITIVE_ORDER);
}
}
package stack.examples;
导入java.util.ArrayList;
导入java.util.Collections;
导入java.util.Comparator;
导入java.util.List;
导入android.app.Activity;
导入android.content.ContentResolver;
导入android.database.Cursor;
导入android.os.Bundle;
导入android.provider.contacts合同;
导入android.provider.ContactsContract.CommonDataTypes.Email;
导入android.view.view;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.ListView;
公共类RetrieveData扩展活动{
列表视图项目;
专用按钮btnAdd;
字符串displayName=“”,emailAddress=“”,phoneNumber=“”;
ArrayList contactlist=新建ArrayList();
阵列适配器;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lvItem=(ListView)this.findViewById(R.id.ListView);
btnAdd=(按钮)this.findviewbyd(R.id.btn);
itemAdapter=new ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,contactlist);
lvItem.setAdapter(itemAdapter);
btnAdd.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){
获取电子邮件();
}
});
}
私人邮件()
{
ContentResolver cr=getContentResolver();
Cursor Cursor=cr.query(ContactsContract.Contacts.CONTENT_URI,null,null,null);
while(cursor.moveToNext())
{
String id=cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.\u id));
游标emails=cr.query(Email.CONTENT\u URI,null,Email.CONTACT\u ID+“=”+ID,null,null);
while(emails.moveToNext())
{
emailAddress=emails.getString(emails.getColumnIndex(Email.DATA));
联系人列表。添加(电子邮件地址);
}
电子邮件。关闭();
分类表(联系人列表);
itemAdapter.notifyDataSetChanged();
}
cursor.close();
}
专用静态无效排序列表(列表){
Collections.sort(aItems,String.CASE不区分大小写的顺序);
}
}
检查下面的测试代码
package stack.examples;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
public class RetrieveData extends Activity {
ListView lvItem;
private Button btnAdd;
String displayName="", emailAddress="", phoneNumber="";
ArrayList<String> contactlist=new ArrayList<String>();
ArrayAdapter<String> itemAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lvItem = (ListView)this.findViewById(R.id.listView);
btnAdd = (Button)this.findViewById(R.id.btn);
itemAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,contactlist);
lvItem.setAdapter(itemAdapter);
btnAdd.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
GetEmails();
}
});
}
private void GetEmails()
{
ContentResolver cr =getContentResolver();
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
while (cursor.moveToNext())
{
String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
Cursor emails = cr.query(Email.CONTENT_URI,null,Email.CONTACT_ID + " = " + id, null, null);
while (emails.moveToNext())
{
emailAddress = emails.getString(emails.getColumnIndex(Email.DATA));
contactlist.add(emailAddress);
}
emails.close();
sortList(contactlist);
itemAdapter.notifyDataSetChanged();
}
cursor.close();
}
private static void sortList(List<String> aItems){
Collections.sort(aItems, String.CASE_INSENSITIVE_ORDER);
}
}
package stack.examples;
导入java.util.ArrayList;
导入java.util.Collections;
导入java.util.Comparator;
导入java.util.List;
导入android.app.Activity;
导入android.content.ContentResolver;
导入android.database.Cursor;
导入android.os.Bundle;
导入android.provider.contacts合同;
导入android.provider.ContactsContract.CommonDataTypes.Email;
导入android.view.view;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.ListView;
公共类RetrieveData扩展活动{
列表视图项目;
专用按钮btnAdd;
字符串displayName=“”,emailAddress=“”,phoneNumber=“”;
ArrayList contactlist=新建ArrayList();
阵列适配器;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lvItem=(ListView)this.findViewById(R.id.ListView);
btnAdd=(按钮)this.findviewbyd(R.id.btn);
项目适配器=