2017-03-13 31 views
2

RecyclerViewSwipeRefreshLayoutの中にあり、私のPHPサーバからPost JSONを取得します。スワイプリフレッシュレイアウトをプルするとき、同じアイテムがリサイクルビューで繰り返し表示されないようにするにはどうすればいいですか?

私のデータベースにはpostが5つしかありません。最初にRecyclerViewを起動すると、5 postが表示されますが、これは問題ありません。

主な問題今、私はSwipeRefreshLayoutを引くたびに、それゆえ今RecyclerView内の全10項目、および特定の同じポストは2 times.When I現れている、再びRecyclerViewに表示する同じ5 postを引っ張っもう一度やり直してください。もう一度表示されるので、今度は合計15個の項目がそれぞれpostに3回表示されます。これは無限回表示されます。

この質問からanswerを試しましたが、次の2つの方法をオーバーライドしましたが、同じ項目が引き続き表示されます。それでは、私が欲しいのはわずか5 posts利用可能なデータベースに存在する場合、それだけで、それは文句を言わない5同じposts 1つのより多くの時間を表示するSwipeRefreshLayoutを引っ張るRecyclerView .Whenユーザーに5 postsを表示し、

@Override 
public long getItemId(int position) { 
    return position; 
} 

@Override 
public int getItemViewType(int position) { 
    return position; 
} 

ですが、より新しい投稿をユーザーに知らせる。

どうすればこの問題を解決できますか?

+2

あなたがプルダウンしたときに、私は推測するあなたの配列リストに項目を追加しているが、項目が配列リストに存在するかどうかだけをチェック追加する前に、配列リストがすでにアイテムを持っている場合は、再度 – Redman

答えて

0

明らかユーザーがswiperを引っ張ると

データをクリアするには、このメソッドを使用してみてくださいの繰り返しを避けるために、再度、新たなデータをリロードします。

public void clear() { 
     int size = this.myList.size(); 
     if (size > 0) { 
      for (int i = 0; i < size; i++) { 
       this.myList.remove(0); 
      } 

      this.notifyItemRangeRemoved(0, size); 
     } 
    } 
+0

bは項目を追加しないでくださいroこれは 'remove(0)'でなければなりません、これはアダプタリストの最初の項目を削除しますか? – ken

+0

私のリストには5つのアイテムがありますが、RecyclerViewには4つのアイテムしか表示されませんでした – ken

+0

ありがとう、これはうまくいきました!!!! – ken

0

JSON

を読む前に、アレイからすべての項目を削除しようと
関連する問題