私のアプリでは、連絡先を表示するために SimpleCursorAdapter を使用しています。
各ビューには独自のチェックボックスがあります。すべてをチェックするために、カーソルを調べて、各 ID をセットに入れます。これは、チェックボックスをトリガーする getView() メソッドによって進められます。
問題はここにあります:
int counter = 0;
if (cursor.moveToFirst())
while (cursor.moveToNext()) {
contact_ids_to_skip.add(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)));
counter++;
}
counter が 157 で、cursor.getCount() が 158 であるため、最初のリスト エントリは常にトリガーされます。
ここで何が起こっているのかわかりません。私はcursor.moveToFirst()がカーソルを正しい位置に置いていると思っていましたが、そうではありません。
どうすればこれを解決できますか?
編集:最初のビューから連絡先IDを読み取りましたが、これはどの時点でもチェックされていませんが、上のコードのセットに追加されていません