如何显示列表的内容?

时间:2018-04-06 12:28:12

标签: java android android-recyclerview

在我的应用程序中,我从服务器获取一些数据并将其显示在我的recyclerView中 我想要显示所有列表内容不显示只显示项目0。

我的适配器代码:

public class PostsAdapter extends RecyclerView.Adapter<PostsAdapter.ViewHolder> {

private ArrayList<Post> postList;
private Context context;
private ListItemClickListener itemClickListener;

public PostsAdapter(Context context, ArrayList<Post> allPostList) {
    this.context = context;
    postList = allPostList;
}

public void setItemClickListener(ListItemClickListener itemClickListener) {
    this.itemClickListener = itemClickListener;
}


@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_post, parent, false);
    return new ViewHolder(view, viewType, itemClickListener);
}

public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

    private ImageView imgPost;
    private TextView tvPostTitle, tvPostCategory, tvPostDate;
    private CardView mCardView;
    private ListItemClickListener itemClickListener;


    public ViewHolder(View itemView, int viewType, ListItemClickListener itemClickListener) {
        super(itemView);

        this.itemClickListener = itemClickListener;
        // Find all views ids
        imgPost = (ImageView) itemView.findViewById(R.id.post_img);
        tvPostTitle = (TextView) itemView.findViewById(R.id.title_text);
        tvPostCategory = (TextView) itemView.findViewById(R.id.post_category);
        tvPostDate = (TextView) itemView.findViewById(R.id.date_text);
        mCardView = (CardView) itemView.findViewById(R.id.card_view_top);

        mCardView.setOnClickListener(this);

    }

    @Override
    public void onClick(View view) {
        if (itemClickListener != null) {
            itemClickListener.onItemClick(getLayoutPosition(), view);
        }
    }
}

@Override
public int getItemCount() {
    return (null != postList ? postList.size() : 0);

}

@Override
public void onBindViewHolder(PostsAdapter.ViewHolder mainHolder, int position) {
    final Post model = postList.get(position);

    // setting data over views
    String title = model.getTitle().getRendered();
    mainHolder.tvPostTitle.setText(Html.fromHtml(title));

    String imgUrl = null;
    if (model.getEmbedded().getWpFeaturedMedias().size() > 0) {
        if (model.getEmbedded().getWpFeaturedMedias().get(0).getMediaDetails() != null) {
            if (model.getEmbedded().getWpFeaturedMedias().get(0).getMediaDetails().getSizes().getFullSize().getSourceUrl() != null) {
                imgUrl = model.getEmbedded().getWpFeaturedMedias().get(0).getMediaDetails().getSizes().getFullSize().getSourceUrl();
            }
        }
    }

    if (imgUrl != null) {
        Glide.with(context)
                .load(imgUrl)
                .into(mainHolder.imgPost);
    } else {
        Glide.with(context)
                .load(R.color.imgPlaceholder)
                .into(mainHolder.imgPost);
    }

    String category = null;

    if (model.getEmbedded().getWpTerms().size() >= 1) {
        category = model.getEmbedded().getWpTerms().get(0).get(0).getName();
    }
    if (category == null) {
        category = context.getResources().getString(R.string.default_str);
    }
    mainHolder.tvPostCategory.setText(Html.fromHtml(category));
    mainHolder.tvPostDate.setText(model.getFormattedDate());
}
}

但是在上面的代码中只显示了第0项,但我希望显示所有项目

我该怎么办?

3 个答案:

答案 0 :(得分:1)

String category = "";
for(int i=0; response.size();i++){
{
category = category + "," +  model.getEmbedded().getWpTerms().get(i).get(i).getName();
}

答案 1 :(得分:1)

试试这个

    for (int i = 0; i < model.getEmbedded().getWpTerms().size(); i++) {
        for (int j=0;j<model.getEmbedded().getWpTerms().get(i).size();j++){

            Log.e("DATA",model.getEmbedded().getWpTerms().get(i).get(j).getName());
        }
    }

答案 2 :(得分:0)

如果您使用过recyclerview,则其适配器具有onBindViewHolder()方法,可为您提供位置变量。用它来遍历列表!

model.getEmbedded().getWpFeaturedMedias().get(position).getMediaDetails()