2015-06-15 3 views
0

У меня есть список, в котором заполняется arraylist. Однако в любое время, когда я использую pull для обновления, данные в списке видят дублирование, хотя я очищаю arraylist перед заполнением. Это мой ArrayListОбновление списка дубликатов контента

List<TimeItems> myList = new ArrayList<TimeItems>(); 

и это, как я заселение адаптера

for (int in = 0; in <= video.size() - 1; in ++) { 
        String a = vDancers.get(in); 
        String b = video.get(in); 
        String c = vName.get(in); 

        TimeLineItems item = new TimeLineItems(a,b,c); 
        myList.add(item); 
       } 

       Collections.sort(myList); 
       you = new MyVideoAdapter(getActivity(), myList,nLikes,nComments,nRepost); 
       //you.notifyDataSetChanged(); 
       listView.setAdapter(you); 

и это, как я клиринговый MyList на тянуть к обновить

listView.setOnRefreshListener(new OnRefreshListener() { 
     @Override 
     public void onRefresh() { 
      new Handler().postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        you = null; 
        nComments.clear(); 
        nRepost.clear(); 
        nRepost.clear(); 
        myList.clear(); 

        parseFetch(); 
        listView.onRefreshComplete(); 
       } 
      }, 5000); 
     } 
    }); 

где вы мой BaseAdapter и parseFetch() - мой метод загрузки сетевых данных. Как полностью очистить myList до обновления, чтобы я не дублировал его в моем списке? Спасибо за вашу помощь

+0

Использование http://developer.android.com/reference/android/widget/BaseAdapter.html#notifyDataSetChanged() для любого изменения данных, связанного с адаптером и использовать http://developer.android.com/reference /android/widget/BaseAdapter.html#notifyDataSetInvalidated() для недействительности текущих данных в адаптере. – pcj

ответ

1

Я получил его. Я также не очищал другие массивы, которые я использовал для заполнения myList. После регистрации различных этапов я понял, что эти массивы дублируются, поэтому мне просто нужно их очистить. Это окончательная работа. Спасибо @ Lavkush2oct и @ Vesko за помощь.

listView.setOnRefreshListener(new OnRefreshListener() { 
    @Override 
    public void onRefresh() { 
     new Handler().postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       you = null; 
       nComments.clear(); 
       nRepost.clear(); 
       nRepost.clear(); 
       myList.clear(); 
       vDancers.clear(); 
       video.clear(); 
       vName.clear(); 
       you.notifyDataSetChanged(); 
       parseFetch(); 
       listView.onRefreshComplete(); 
      } 
     }, 5000); 
    } 
}); 
1

Позвоните notifyDataSetChanged() в свой список адаптеров. Удалить эту строку you = null;

myList.clear(); you.notifyDataSetChanged();

+0

спасибо, но проблема все та же. – saintjab

+0

Можете ли вы опубликовать полный код. Возможно, вам не хватает чего-то, что дублирует аррайалист. – Lavakush

+0

Спасибо @ Lavkush2oct, я решил проблему – saintjab

2

на основе фрагментов кода я вижу, я остался под впечатлением вы используете ArrayAdapter. Если это действительно так. В чем причина, почему вы манипулируете myList после того, как ваш адаптер you инициализирован?

Все, что вы можете сделать, это позвонить

you.clear() 
// add your data with you.add(item) 
+0

Я использую BaseAdaper, и я даже не могу получить доступ к функции clear на адаптере. Точечная нотация не показывает четкого метода. – saintjab

Смежные вопросы