У меня есть 3 массива. Конечная цель – изменить все телефонные номера в списке на имена контактов.
fetchContactNumbers() возвращает список всех телефонных номеров (31) на моем устройстве.
fetchContactNames() возвращает список всех имен контактов (31) на моем устройстве.
newList содержит 6 телефонных номеров.
Что я делаю, так это меняю числа в newList на соответствующие имена в fetchContactNames() в соответствии с позицией fetchContactNumbers(). Таким образом, поскольку элементы 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) меняется на свое правильное имя.
Кто-нибудь знает, почему меняется только одно имя, а не все? Я проверил logcat, и он показывает то же самое без ошибок.
HashMap
для этой цели? Когда у вас есть два массива чисел и имен, ваш HashMap кажется гораздо лучшим подходом,HashMap<Name, Number>
- person Simon Dorociak   schedule 11.06.2012