Отображение данных в RecyclerView

232
04 февраля 2018, 00:54

Есть вот такой Json http://samples.openweathermap.org/data/2.5/forecast?q=M%C3%BCnchen,DE&appid=b6907d289e10d714a6e88b30761fae22 с сайта https://openweathermap.org/ используя Retrofit получаю необходимые мне данные но когда пытаюсь вывести их на экран, срабатывает через раз, иногда выводит иногда нет, при том что данные приходят каждый раз нормально. Подскажите пожалуйста в чем может быть дело.

public class MainActivity extends AppCompatActivity {
private RestManager restManager;
private List<ModelWeather> listItems;
@BindView(R.id.recyclerview)
RecyclerView recyclerView;
private RecyclerAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ButterKnife.bind(this);
    setRecyclerView();
    restManager = new RestManager();
    Call<ModelWeather> call =  restManager.getWeatherAPI().getWeather();
    call.enqueue(new Callback<ModelWeather>() {
        @Override
        public void onResponse(Call<ModelWeather> call, Response<ModelWeather> response) {
            Log.d("Log", "onResponse: Server Response: " + response.toString());
            Log.d("Log", "onResponse: received information: " + response.body().toString());
            ArrayList<ListWeather> listWeathers = response.body().getListWeather();
            for(int i = 0; i < listWeathers.size(); i++){
                ModelWeather modelWeather = listWeathers.get(i);
                listItems.add(modelWeather);
            }
        }
        @Override
        public void onFailure(Call<ModelWeather> call, Throwable t) {
            Log.e("Log", "onFailure: Something went wrong: " + t.getMessage() );
        }
    });
}
public void setRecyclerView(){
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
    listItems = new ArrayList<>();
    adapter = new RecyclerAdapter(listItems);
    recyclerView.setAdapter(adapter);
}}

Адаптер:

public class RecyclerAdapter extends RecyclerView.Adapter<ViewHolder> {
private List<ModelWeather> weatherList;
public RecyclerAdapter(List<ModelWeather> weatherList) {
    this.weatherList = weatherList;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.weather_item, parent, false);
    return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    ModelWeather weather = weatherList.get(position);
    holder.tempText.setText(weather.getListWeather().get(position).getMain().getTemp());
    holder.descriptionText.setText(weather.getListWeather().get(position).getWeather().get(0).getDescription());
}
@Override
public int getItemCount() {
    return weatherList.size();
}}
READ ALSO
Правильное подключение к БД

Правильное подключение к БД

Задача вот в чем -- нужно вставить в таблицу (например) 10000 строкЧерез ExecutorService сделал чтобы каждая строка вставлялась в отдельном потоке

209
Округление double по школьным правилам

Округление double по школьным правилам

Как добиться правильного "школьного" округления?

171
Продолжить программу при пустом поле EditText

Продолжить программу при пустом поле EditText

При наступлении условия if нужно передать int значение 1 для переменнойinputtext, которой должна присвоиться либо введенная пользователем информация...

169
Как добавить класс &#39;active&#39; к текущей точке owl-carousel 2

Как добавить класс 'active' к текущей точке owl-carousel 2

Я использую слайдер owl carosel 2, мне нужно добавить класс 'active' к той точке, которая выбранаКак это можно сделать на js ?

253