【发布时间】:2015-05-06 05:39:21
【问题描述】:
我想在带有卡片元素的回收站视图中显示我的联系人。问题是,它只显示一个联系人多次。因此,每张卡片中都会显示相同的名称。似乎光标没有到达下一个联系人。但我不知道为什么。我不得不承认我对 android 很陌生。 代码如下:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.contacts);
RecyclerView recList = (RecyclerView) findViewById(R.id.cardList);
recList.setHasFixedSize(true);
LinearLayoutManager llm = new LinearLayoutManager(this);
llm.setOrientation(LinearLayoutManager.VERTICAL);
recList.setLayoutManager(llm);
contactRecAdapter ca = new contactRecAdapter(data);
recList.setAdapter(ca);
data = displayContact();
}
还有我的 displayContact():
private ArrayList<contactInfo> displayContact(){
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,null,null,null,null);
String name ;
String number;
String id;
contactInfo cI = new contactInfo();
if(cur.getCount()>1){
while (cur.moveToNext()){
id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
if(Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)))>0){
cI.name = name;
Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?",new String[]{id},null);
while (pCur.moveToNext()){
number = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
cI.number =number;
}
data.add(cI);
pCur.close();
}
}
}
cur.close();
return data;
}
谢谢!
【问题讨论】:
-
你好,你需要先收集数据,然后在适配器中设置。尝试更改您的 onCreate() data = displayContact(); contactRecAdapter ca = new contactRecAdapter(data); recList.setAdapter(ca);
标签: cursor contacts android-recyclerview android-cardview