2016-06-08 1 views
0

Je construis une application et j'utilise Arraylist, qui est émis par Observable. Dans cette liste j'ai 20 articles. Les 10 premiers articles sont à la page 1 et les 10 autres à la page 2. Mais, quand je vais à la page 2, les 10 premiers articles sont supprimés, et il n'y a que 10 articles de la page 2, mais je ne sais pas . Je veux montrer tout ce que 20 éléments sur la page 2, et pas seulement 10 éléments de la page 2. Pourriez-vous m'aider?Pourquoi les éléments de la première page dans ArrayList sont supprimés lorsque je passe à la page2?

Ceci est mon code:

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()); 

        } 
       }); 
    } 
}); 

Répondre

0

Je suppose que le problème est dans le rappel onNext(); vous faites ce

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

Je ne sais pas quel type de adapter vous avez mais, Vous pouvez deviner ce qui se passera si vous demandez d'effacer le Adapter

si vous utilisezLa méthode, clear() supprimera tous les éléments de la liste.

0

essayer ci-dessous

@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

Et si j'ai par exemple 50 articles (10 articles par page)? –

+0

Avoir une approche basée sur l'identifiant de sorte que vous pouvez sous-liste liste de tableaux correctement – Sush