在我的应用程序中,我使用 SimpleCursorAdapter 来显示联系人。
每个视图都有它自己的复选框。为了检查所有内容,我正在浏览光标,将每个 ID 放入一个 Set,由 getView() 方法进行以触发复选框。
问题在这里:
int counter = 0;
if (cursor.moveToFirst())
while (cursor.moveToNext()) {
contact_ids_to_skip.add(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)));
counter++;
}
总是触发第一个列表条目,因为计数器是 157,而 cursor.getCount() 是 158。
我不知道这里发生了什么。我认为 cursor.moveToFirst() 将光标放在正确的位置,但事实并非如此。
我该如何解决这个问题?
编辑:我从第一个视图中读取了联系人 ID,它在任何时候都不会被取消选中,并且它没有被添加到上面代码中的集合中