Почему я получаю повторяющиеся элементы в моем ListView? - PullRequest
0 голосов
/ 25 июня 2010

Я использую следующий код для заполнения списка

Метод создания:

SimpleAdapter adapter = new SimpleAdapter(this, list, R.layout.more_custom_row_view, new String[] {"title","desc"}, new int[] {R.id.text1,R.id.text2});
populateList();
setListAdapter(adapter);


static final ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>(); 

private void populateList() {
   HashMap<String,String> temp = new HashMap<String,String>();
   temp.put("title","Previous Searches");
   temp.put("desc", "View your search history");
   list.add(temp);
   HashMap<String,String> temp1 = new HashMap<String,String>();
   temp1.put("title","Settings");
   temp1.put("desc", "Update your account settings");
   list.add(temp1);
}

когда я иду к другому занятию и возвращаюсь к этому заданию, оно дублирует элементы списка каждый раз, когда кто-нибудь ведет меня, какую ошибку я делаю?

Ответы [ 3 ]

2 голосов
/ 25 июня 2010

Проблема в том, что вы используете статический список для своих элементов, а не очищаете или повторно создаете его в методе onCreate.

Список будет оставаться в памяти до тех пор, пока ваша программа работает, поскольку она определена как статическая.Если вы возвращаетесь к занятию, элементы снова добавляются в список.Вы можете использовать clear () , чтобы удалить все элементы из списка в вызове заполненного списка перед повторным заполнением.

2 голосов
/ 30 августа 2014

Простой, проверьте адаптер.isEmpty () перед заполнением

Это фрагмент моей собственной кодовой базы.

private void populateWithAppPackages() {
  //DON'T continue if the adapter is not empty; prevents duplicates
  if(!mAdapter.isEmpty()){
    return;
  }

  /* ... populate the list ... */
}

НЕ clear() список адаптеров !!

clear() и повторное заполнение списка при каждом посещении действия или фрагмента - очень дорогой набор операций. Лучше было бы разумно заполнить список, как указано выше.

0 голосов
/ 25 июня 2010

удаление final из списка решило мою проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...