2016-06-08 4 views
0

나는 응용 프로그램을 만들고 있는데 Obravable에서 emmited 인 Arraylist를 사용합니다. 그 목록에는 20 개의 항목이 있습니다. 첫 번째 10 개 항목은 1 페이지에 있고 두 번째 항목은 2 페이지에 있습니다.하지만 2 페이지에 갈 때 처음 10 개 항목이 삭제되고 2 페이지에서 10 개 항목 만 표시됩니다. . 2 페이지에있는 20 개의 모든 항목을 보여주고 싶습니다. 2 페이지의 10 개 항목뿐 아니라 도와 주시겠습니까? 당신은 당신이 가지고 있지만 adapter 어떤 방식을 모르는왜 내가 page2에 갈 때 ArrayList의 첫 페이지의 항목이 삭제 되었습니까?

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

이 일을하는

같아요
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(); 에 있습니다

이 내 코드입니다 당신은 당신이

를 사용하고 있다면를 사용하는 경우 어떤 일이 일어날 지 짐작할 수 있습니다., 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 기반 접근 방식을 사용하면 배열 목록을 적절하게 하위 목록으로 만들 수 있습니다. – Sush