2016-06-08 17 views
0

我正在構建一個應用程序,並使用了Observable中的Arraylist。在那個列表中我有20個項目。前10個項目在第1頁上,第10個項目在第2頁上。但是,當我進入第2頁時,前10個項目被刪除,並且僅顯示來自第2頁的10個項目,但我不知道那是什麼。我想在第2頁顯示所有20個項目,而不僅僅是第2頁中的10個項目。 你能幫我嗎?爲什麼當我到第2頁時,ArrayList中第一頁的項目被刪除?

這是我的代碼:

ideaService.getIdeas(page) 
       .subscribeOn(Schedulers.newThread()) 
       .observeOn(AndroidSchedulers.mainThread()) 
       .subscribe(new Subscriber<ArrayList<Item>>() { 
        @Override 
        public void onCompleted() { 
         if (ideaAdapter.getItemCount() > 0) { 
          ideaAdapter.notifyDataSetChanged(); 
          //ideaAdapter.setLoaded(); 

          // startingText.setVisibility(View.GONE); 
          //mRecycleView.setVisibility(View.VISIBLE); 
        } 
        else { 
        startingText.setText(getString(R.string.no_ideas)); 
       } 
       if (mSwipeRefreshLayout.isRefreshing()) { 
        mSwipeRefreshLayout.setRefreshing(false); 
       } 
       ideaAdapter.setLoaded(); 
        } 

        @Override 
        public void onError(Throwable e) { 
         e.printStackTrace(); 
         dialog.show(); 
        } 

        @Override 
        public void onNext(ArrayList<Item> items) { 
         //Remove loading item 
         //ideaAdapter.getmItems().remove(ideaAdapter.getmItems().size() - 1); 
         //ideaAdapter.notifyItemRemoved(ideaAdapter.getmItems().size()); 
         ideaAdapter.clear(); 
         ideaAdapter.setList(items); 
         Log.d("Array", "arrayListONE " + ideaAdapter.getmItems().size()); 

        } 
       }); 
    } 
}); 

回答

0

我想,這個問題是在回調onNext(); 你正在做這個

ideaAdapter.clear(); 
ideaAdapter.setList(items); 

我不知道你是什麼類型的adapter但是,如果您要清除Adapter

如果您使用的是ArrayAdapter,clear()方法將從列表中刪除所有元素。

0

試試下面

@Override 
       public void onNext(ArrayList<Item> items) { 
        //Remove loading item 
        //ideaAdapter.getmItems().remove(ideaAdapter.getmItems().size() - 1); 
        //ideaAdapter.notifyItemRemoved(ideaAdapter.getmItems().size()); 
        ideaAdapter.clear(); 
        // if your items list is of 20 items only 
        ideaAdapter.setList(items.subList(10,19)); 
        ideaAdapter.notifyDataSetChanged(); 

        Log.d("Array", "arrayListONE " + ideaAdapter.getmItems().size()); 

       } 
+0

如果我有,例如50個項目(10項每頁)? –

+0

有一些基於ID的方法,所以你可以正確的subList數組列表 – Sush

相關問題