私は3つの配列リストを持っています。最終的な目標は、リストビューのすべての電話番号を連絡先の名前に変更することです。
fetchContactNumbers()は、デバイス内のすべての電話番号 (31) のリストを返します。
fetchContactNames()は、デバイス内のすべての連絡先名 (31) のリストを返します。
newListには 6 つの電話番号が含まれています。
私がやっていることは、fetchContactNumbers() の位置に従って、newList 内の番号を fetchContactNames() の対応する名前に変更することです。したがって、fetchContactNumbers() と fetchContactNames() の要素は正しい順序になっているため、newList は fetchContactNumbers() で一致するものを探し、その位置にインデックスを付け、fetchContactnames() でその位置を使用して newList の番号を次のように設定します。その代表的な名前。より鮮明な画像をテストするために作成した例を次に示します。
コンソール アプリとしてテストする例: http://pastebin.com/pApHNkXa
私の活動のコードは次のとおりです。
// change displayed numbers into contact names
for(int i = 0; i < newList.size(); i++){
int index = fetchContactNumbers().indexOf(newList.get(i));
if(fetchContactNumbers().contains(newList.get(i))){
newList.set(i, this.fetchContactNames().get(index));
}
}
そこから、newList が CustomAdapter クラスに渡され、リストビューに入力されます。
上記のコード (私の例に基づいて正しい) の問題は、アプリでこれを実行すると、newList.get(3) のみが正しい名前に変更されることです。
すべてではなく 1 つの名前だけが変更されている理由を知っている人はいますか? logcat を確認したところ、エラーなしで同じことが表示されます。