2016-06-26 2 views
0

Я получаю данные со стороны сервера в свой RecyclerView, но код всегда устанавливает последний текст в TextView. Я так растерялся. Вы можете мне помочь? Благодарю. Я делюсь своим кодом ниже.Loop всегда устанавливает последние данные в TextView в Android

private void bindDatas() { 

    Retrofit retrofit = new Retrofit.Builder() 
      .baseUrl(NewsService.BASE_URL) 
      .addConverterFactory(GsonConverterFactory.create()) 
      .build(); 

    NewsService newsService = retrofit.create(NewsService.class); 
    final Call<NewsCatalog> requestCatalog = newsService.newsCatalog(); 


    requestCatalog.enqueue(new Callback<NewsCatalog>() { 
     @Override 
     public void onResponse(Call<NewsCatalog> call, Response<NewsCatalog> response) { 
      NewsCatalog catalog = response.body(); 
      SubNodes subNodes = new SubNodes(); 
      mainNodes = new MainNodes(); 


      for (int i = 0; i < catalog.nodes.size(); i++) { 
       mainNodes = catalog.nodes.get(i); 
       Log.i(TAG, "" + mainNodes.node.body); 

       subNodes.setBody(mainNodes.node.body); 

       subNodesList.add(subNodes); 
       adapter.notifyDataSetChanged(); 
      } 
     } 

     @Override 
     public void onFailure(Call<NewsCatalog> call, Throwable t) { 
      Log.e(TAG, "Error: " + t.getMessage()); 
     } 
    }); 
} 

ответ

1

Насколько я могу судить, ваш subNodes всегда был одним и тем же экземпляром?

Таким образом, номер поднабора не был увеличен.

Я думаю, что создание подузел должно быть в цикле:

for (int i = 0; i < catalog.nodes.size(); i++) 
    mainNodes = catalog.nodes.get(i); 
    Log.i(TAG, "" + mainNodes.node.body); 

    subNodes = new SubNodes(); // ADD THIS LINE 

    subNodes.setBody(mainNodes.node.body); 

    subNodesList.add(subNodes); 
    adapter.notifyDataSetChanged(); 
} 
+0

большое спасибо @sakiM он работал :) – nuhkoca

Смежные вопросы