2017-09-06 17 views
1

嗨即時通訊新編程和我的問題是當我切換我的導航標籤。重新加載時,我的數據會重複。在Recycler視圖上覆制的適配器

httpClient.get(url, object : JsonHttpResponseHandler() { 
      override fun onSuccess(statusCode: Int, headers: Array<out Header>, response: JSONArray) { 
       for (i in 0 until response.length()) { 
        val seminar = Seminar.fromJson(response.getJSONObject(i)) 

        seminarsAdapter.add(SeminarItem(seminar)) 
       } 
      } 

      override fun onFailure(statusCode: Int, headers: Array<out Header>?, responseString: String?, throwable: Throwable?) { 
       Log.d("Seminars Fragment", throwable?.localizedMessage) 
      } 
     }) 
+1

如此清晰適配器列表一起實現它,如果你需要更新數據 –

回答

0

您可以清除列表前增加新的項目,但在情況下,你會希望通過將一個或更多的東西的邏輯在未來將其添加一個我建議你添加DiffUtilAdapter內部管理您Adapter

DiffUtil的內容是一個實用工具類,它可以計算出兩個列表,並輸出將第一列表進入第二one.It更新操作的列表之間的差異可以用來計算一個RecyclerView更新適配器。

給看看到this post,說明如何前`add`與AdapterRecyclerView

0

如果seminarsAdapter已經有一些數據,您將添加到現有的一組數據。

也許,將clear方法添加到您的seminarsAdapter類型中,然後在onSuccess(...)之前調用它。

0
httpClient.get(url, object : JsonHttpResponseHandler() { 
     override fun onSuccess(statusCode: Int, headers: Array<out Header>, 
response: JSONArray) { 
if(seminarsAdapter.size()>0){ 
seminarsAdapter.clear(); 
} 
      for (i in 0 until response.length()) { 
       val seminar = Seminar.fromJson(response.getJSONObject(i)) 

       seminarsAdapter.add(SeminarItem(seminar)) 
      } 
     } 

     override fun onFailure(statusCode: Int, headers: Array<out Header>?, responseString: String?, throwable: Throwable?) { 
      Log.d("Seminars Fragment", throwable?.localizedMessage) 
     } 
    }) 

明確的研討會適應api調用的適配器列表,以便數據不會重複。 試試上面的代碼

+0

的.size是一個懸而未決的參考。我的研討會適配器是FastAdapter <> –