Адаптер Android notifyDataSetChanged() не очищает предыдущий список

Я видел, что было много проблем с notifyDataSetChanged(). Я просмотрел многие из них, и ни одно из решений не сработало для меня.

Я использую ArrayList для установки своего списка, и после обновления моего ArrayList я запустил notifyDataSetChanged(). Новый список добавляется к предыдущему.

скажем, первый список - это a, b, а новый список - это a, b, c. что я получаю в конце, это а, б, а, б, в. и каждый раз при обновлении это происходит снова с новым списком.

Я пробовал другие, такие как invalidate(), адаптер clear(), refreshDrawableState() и т. д., и ничего не получалось.

Заранее спасибо.

Вот упрощенный код, обратите внимание, что изменение MainActivity расширяет Activity на ListActivity, что приводит к сбою программы даже после того, как я изменил код в файле .xml.

public class MainActivity extends Activity 
{
ArrayList<String> names = new ArrayList<String>();
ArrayAdapter arrayAdapter = null;

@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    ListView lv1 = (ListView) findViewById(R.id.listview);
    arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, names);
    lv1.setAdapter(arrayAdapter);

}

//code here to edit the ArrayList names.

public void onResume() 
{
    super.onResume();  // Always call the superclass method first

    //the activity need to be updated everytime it resumes.
    arrayAdapter.notifyDataSetChanged();

}
}

person user1610613    schedule 23.08.2012    source источник
comment
Вероятно, проблема в коде, который вы обновляете ArrayList. Не могли бы вы также поделиться им? ArrayList в некотором роде сложны, и не очевидно, как заменить содержимое всего списка. Вы вызываете clear() перед тем, как поместить новые элементы?   -  person sandrstar    schedule 23.08.2012
comment
Я не понимаю, хотите ли вы, чтобы новый список содержал a,b,a,b,c или только a,b,c. Правильно ли вы обновляете содержимое своего ArrayList?   -  person Spinner    schedule 23.08.2012


Ответы (1)


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

person Eldhose M Babu    schedule 23.08.2012
comment
вы, ребята, абсолютно правы. это просто моя собственная неудачная логика, которая вызвала проблему. Сам код работает отлично. - person user1610613; 24.08.2012