Я много раз реализовывал RecyclerView и адаптер клиента, но по какой-то причине не могу заставить его отображать какие-либо данные. Я передаю данные из JSON, используя модификацию, и вызываю notifyDataSetChanged() после загрузки, но они все еще остаются пустыми. Я сократил это до одного текстового представления, чтобы попытаться упростить, но все равно ничего не получил. Может ли кто-нибудь увидеть, где я ошибаюсь?
Когда я отлаживаю, я получаю список, содержащий данные, поэтому я определенно правильно анализирую данные, я просто не могу получить он отображается в представлении переработчика. Я даже проверил list.size() в методе loadTrailerList, и у него есть данные.
Метод My Activity onCreate:
Код: Выделить всё
trailerAdapter = new TrailerAdapter(this);
trailerRecyclerView = findViewById(R.id.trailer_recycler_view);
trailerRecyclerView.setLayoutManager(new LinearLayoutManager(this));
trailerRecyclerView.setAdapter(trailerAdapter);
Код: Выделить всё
if (response.body() != null) {
trailers = response.body().getTrailers();
}
trailerAdapter.loadTrailerList(response.body().getTrailers());
Код: Выделить всё
public class TrailerAdapter extends RecyclerView.Adapter {
private final List trailerList = new ArrayList();
private final TrailerClickListener listener;
public TrailerAdapter(TrailerClickListener listener) {
this.listener = listener;
}
@NonNull
@Override
public TrailerViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View itemView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.trailer_list_item, viewGroup, false);
return new TrailerViewHolder(itemView, this);
}
@Override
public void onBindViewHolder(@NonNull TrailerViewHolder trailerViewHolder, int i) {
trailerViewHolder.trailerTitle.setText(trailerList.get(i).getName());
}
@Override
public int getItemCount() {
return trailerList.size();
}
public void loadTrailerList(List trailers) {
this.trailerList.clear();
if (trailers != null) {
trailers.addAll(trailers);
}
notifyDataSetChanged();
}
class TrailerViewHolder extends RecyclerView.ViewHolder {
final TrailerAdapter trailerAdapter;
private final TextView trailerTitle;
private TrailerViewHolder(@NonNull View itemView, TrailerAdapter trailerAdapter) {
super(itemView);
this.trailerAdapter = trailerAdapter;
trailerTitle = itemView.findViewById(R.id.text_view_trailer_title);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listener.onTrailerClicked(trailerList.get(getAdapterPosition()));
}
});
}
}
}
Код: Выделить всё
Код: Выделить всё
Источник: https://stackoverflow.com/questions/547 ... g-any-data