首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android Viewgroup问题

Android Viewgroup问题
EN

Stack Overflow用户
提问于 2019-03-27 10:34:41
回答 3查看 63关注 0票数 2

我在使用viewGroup时遇到了问题,由于某种原因,id不能处理语句,我真的试过了所有的方法,你能帮我吗?

我不知道是version3.3.2的问题,还是代码出了什么问题

代码语言:javascript
复制
public class popularAdapter extends  RecyclerView.Adapter<popularAdapter.ImageViewHolder> {

    private Context mContext;
    private List<popular> mPopulars;

    public popularAdapter (Context context,List<popular>populars){

        mContext=context;
        mPopulars=populars;



    }




    @Override
    public ImageViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
                                                      //HERE IS THE ISSUE
        View v= LayoutInflater.from(mContext).inflate(R.layout.popular_item2,viewGroup,false);

        return new ImageViewHolder(v);
    }

    @Override
    public void onBindViewHolder(ImageViewHolder holder, int position) {

    popular popularCur=mPopulars.get(position);
    ImageViewHolder.prodName.setText(popularCur.getProduc_name());


    }

    @Override
    public int getItemCount() {
        return 0;
    }

    public class ImageViewHolder extends RecyclerView.ViewHolder {

        public TextView prd_name;
        public TextView prd_price;
        public TextView prd_img;

        public ImageViewHolder(View itemView) {
            super(itemView);

            prd_name =itemView.findViewById(R.id.prodName);
            prd_price=itemView.findViewById(R.id.prodPrice);
            prd_img  =itemView.findViewById(R.id.prodImageHolder);




        }
    }

}
EN

回答 3

Stack Overflow用户

发布于 2019-03-27 13:49:21

问题就在这里

因为在getItemCount中返回0,所以您永远不会在RecyclerView中获得任何项

代码语言:javascript
复制
    @Override
    public int getItemCount() 
    {
       //return 0 ?
        return 0;
    }

更改为

代码语言:javascript
复制
    @Override
    public int getItemCount() 
    {
        return mPopulars.size();
    }

代码语言:javascript
复制
int getItemCount ()

返回适配器保存的数据集中项的总数。

票数 1
EN

Stack Overflow用户

发布于 2019-03-27 13:45:22

尝试此解决方案

代码语言:javascript
复制
public ImageViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View v= LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.popular_item2,viewGroup,false);
    return new ImageViewHolder(v);
}
票数 0
EN

Stack Overflow用户

发布于 2019-03-27 14:23:28

优化@Ashwin solanki答案

更改以下代码

代码语言:javascript
复制
@Override
public int getItemCount() 
{
   //return 0 ?
    return 0;
}

代码语言:javascript
复制
@Override
public int getItemCount() 
{
   //return 0 ?
    if(mPopulars != null) {
        return mPopulars.size();
    }
    return 0;
}

描述:为getItemCount方法返回的count调用onCreateViewHolder和onBindViewHolder方法。因为你的代码总是返回0,所以这些方法不会被调用,列表也不会在UI上被填充。

另外,检查来自onBindViewHolder方法的代码中的以下代码行:

代码语言:javascript
复制
ImageViewHolder.prodName.setText(popularCur.getProduc_name());

您正在将“ImageViewHolder”类的“prodName”变量视为静态变量,但它不是静态变量。相反,它应该是

代码语言:javascript
复制
holder.prodName.setText(popularCur.getProduc_name());
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55368939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档