簡體   English   中英

如何修復在Android上的RecyclerView中不顯示任何項目

[英]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;
    }
}

然后,可以將totalgetItemCount一起使用。

如下更改您的getItemCount()方法

@Override
public int getItemCount() {
    return model.size();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM