[英]How to fix not show any items in RecyclerView on Android
在我的應用程序中,我應該向RecyclerView
顯示一些數據。
我想將項目計數發送到adapter
,然后顯示項目。
我寫下面的代碼,但不給我看任何項目!!!
活動代碼:
call.enqueue(new Callback<CelebrityAwardResponse>() {
@Override
public void onResponse(Call<CelebrityAwardResponse> call, Response<CelebrityAwardResponse> response) {
if (response.body().getData() != null) {
awardModel.clear();
List<Award> won = new ArrayList<>();
List<Award> lost = new ArrayList<>();
for (Award award : response.body().getData().get(1).getAwards()) {
if (!award.getWon()) {
lost.add(award);
} else {
won.add(award);
}
}
if (won.size() > 0) {
awardModel.addAll(won);
Log.e("Won", "G won : " + won.size());
} else {
awardModel.addAll(lost);
Log.e("Won", "G lost : " + lost.size());
}
awardAdapter = new AwardAdapter(context, awardModel, won.size(), lost.size());
infoMovieFrag_AwardGoldenRecyclerView.setLayoutManager(new LinearLayoutManager
(context, LinearLayoutManager.HORIZONTAL, false));
infoMovieFrag_AwardGoldenRecyclerView.setHasFixedSize(true);
infoMovieFrag_AwardGoldenRecyclerView.setNestedScrollingEnabled(false);
infoMovieFrag_AwardGoldenRecyclerView.addOnItemTouchListener(disableRecyclerViewScroll);
infoMovieFrag_AwardGoldenRecyclerView.setAdapter(awardAdapter);
}
}
適配器代碼:
public class AwardAdapter extends RecyclerView.Adapter<AwardAdapter.ViewHolder> {
private Context context;
private List<Award> model;
private int modelImage;
private int won, nominated, total;
public AwardAdapter(Context context, List<Award> model, int won, int nominated) {
this.context = context;
this.model = model;
this.won = won;
this.nominated = nominated;
}
@Override
public AwardAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_award, parent, false);
return new AwardAdapter.ViewHolder(view);
}
@Override
public void onBindViewHolder(final AwardAdapter.ViewHolder holder, final int position) {
if (model.get(position).getWon()) {
modelImage = R.drawable.golden_globe_gold;
} else {
modelImage = R.drawable.golden_globe_silver;
}
Glide.with(context)
.load(modelImage)
.placeholder(R.drawable.default_image)
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.into(holder.row_awardImg);
if (won > 0) {
total = won;
} else {
total = nominated;
}
Log.e("AwardNumber", total + "");
}
@Override
public int getItemCount() {
return total;
}
public class ViewHolder extends RecyclerView.ViewHolder {
private ImageView row_awardImg;
public ViewHolder(View itemView) {
super(itemView);
row_awardImg = (ImageView) itemView.findViewById(R.id.row_awardImg);
}
}
}
為什么不顯示數據? 請幫我
由於您的getItemCount
返回的total
不依賴於列表的大小,因此項目計數似乎為零。 您應該將其更改為:
@Override
public int getItemCount() {
return model.size();
}
編輯:
將此代碼移到您的類的構造函數中:
public AwardAdapter(Context context, List<Award> model, int won, int nominated) {
this.context = context;
this.model = model;
this.won = won;
this.nominated = nominated;
if (won > 0) {
total = won;
} else {
total = nominated;
}
}
然后,可以將total
與getItemCount
一起使用。
如下更改您的getItemCount()
方法
@Override
public int getItemCount() {
return model.size();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.