fetchContactName()
連絡先リスト内のすべての名前 (31) を返す arraylist と呼ばれる、 に関連付けfetchContactNumbers()
られたすべての電話番号 (31) を返すarraylist と呼ばれる、テキスト メッセージ (6) を送信したすべての番号をfetchContactName()
含む arraylist と呼ばれる呼び出しがあります。newList
newList
で同じ番号を探しての電話番号を変更しようとしていましたfetchContactNumbers()
。一致した場合は、 の位置にインデックスfetchContactNumbers()
を付け、そのインデックスを使用して の同じ位置にある名前を取得しfetchContactName()
ます。そこから、インデックス付けされた位置に従って、数字をnewList
名前に置き換えます。fetchContactName()
これは、上記のように実行する私が作成した例です。
上記の例の問題は、それを my に適用するとlistview
、リスト内の 1 つの要素だけが名前に変更されることです。さらに奇妙なことnewList.get(3)
に、名前に変わったのは だけです。newList
位置ではありません0, 1, 2, 4 and 5
。
他の人が示唆しているように、 a を使用しHashMap
て上記の例と同じ期待される結果を得るにはどうすればよいですか? fetchContactNumbers()
を使用しfetchContactNames()
、Hashmap
次に を使用しHashMap
て と比較するように言われましたnewList
が、これを達成するためのソースが見つかりません。
アップデート:
これは私の HashMap の作業コードですが、結果は上記と同じです。
for (String str : fetchContactNames()) {
contactNameNew += str + " ";
}
for (String str2 : fetchContactNumbers()) {
contactNumberNew += str2 + " ";
}
//String to split
String temp[];
String temp2[];
String delimiter = " ";
temp = contactNameNew.split(delimiter);
temp2 = contactNumberNew.split(delimiter);
HashMap<String, String> contacts = new HashMap<String, String>();
contacts.put(contactNameNew, contactNumberNew);
for(int i = 0; i < fetchContactNames().size(); i++){
contacts.put(temp[i], temp2[i]);
}
Iterator<Entry<String, String>> iterator = contacts.entrySet().iterator();
while(iterator.hasNext()){
Entry<String, String> entry = iterator.next();
int position = getPosition(newlist, entry.getValue());
if (newlist.contains(entry.getValue())) {
newlist.set(position, entry.getKey());
}
}