2017-02-01 2 views
0

Я хочу реализовать loadmore с gridview и сталкиваться с проблемами. Я могу получить новые данные прокрутки, и я могу видеть новые виды. но предыдущие взгляды исчезают. Я использовал notifyDataSetChanged(). Но все же эта проблема существует, помогите мне.Загрузите больше, используя gridview, удалив предыдущие элементы после получения новых данных.

Вот мой код действия настройки по методу прокрутки в OnCreate

grid.setOnScrollListener(new AbsListView.OnScrollListener() { 
     @Override 
     public void onScrollStateChanged(AbsListView view, int scrollState) { 

     } 

     @Override 
     public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
      int lastInScreen = firstVisibleItem + visibleItemCount; 
      if ((lastInScreen == totalItemCount) && !(loadingMore)) { 

       if (stopLoadingData == false) { 
        // FETCH THE NEXT BATCH OF FEEDS 
        listBikes(); 
       } 

      } 
     } 


    } 

listbikes является вызов сервера для извлечения данных на свитке. В методе Processlistener я настрою данные для адаптера.

bikeList = (CollectionResponseBike) result; 
     mCursor = bikeList.getNextPageToken(); 
     items = (ArrayList) bikeList.getItems(); 

     Collections.sort(items, new Comparator<Bike>() { 
      @Override 
      public int compare(Bike lhs, Bike rhs) { 
       String id1 = ((Bike) lhs).getTitle(); 
       String id2 = ((Bike) rhs).getTitle(); 
       return id1.compareTo(id2); 
      } 
     }); 
     grid.setAdapter(new BikeCustomGrid(BikeGridList.this,items)); 
     loadingMore = false; 
     progressBar.setVisibility(View.GONE); 

код адаптера здесь

public BikeCustomGrid(Context c, ArrayList<Bike> mItems) { 
    mContext = c; 

    items = mItems; 
    mLayoutInflater= LayoutInflater.from(c); 
    VolleySingleton mVolley= VolleySingleton.getInstance(mContext); 
    mImageLoader=mVolley.getImageLoader(); 
    notifyDataSetChanged(); 

} 

Пожалуйста, дайте мне знать, решение для этого. Благодарю вас в adavance.

ответ

0

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

Что-то вроде этого:

mItems.addAll(yourListData coming from server or local db) 
adapter.addItems(mItems); 

метод адаптера:

public addItems(List list){ 
    items.addAll(list) 
    notifyDataSetChanged(); 
} 
Смежные вопросы