Android Viewgroup问题

时间:2019-03-27 02:34:41

标签: android android-viewgroup

我在使用viewGroup时遇到问题,由于某种原因id无法处理该语句,实际上我已尝试了所有方法,请您帮忙吗?

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

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);




        }
    }

}

3 个答案:

答案 0 :(得分:1)

问题在这里

您永远不会在 RecyclerView 中获得任何物品,因为您在getItemCount

中返回0
    @Override
    public int getItemCount() 
    {
       //return 0 ?
        return 0;
    }

更改

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

getItemCount

int getItemCount ()

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

答案 1 :(得分:0)

尝试此解决方案

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);
}

答案 2 :(得分:0)

优化@Ashwin solanki答案

更改以下代码

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

@Override
public int getItemCount() 
{
   //return 0 ?
    if(mPopulars != null) {
        return mPopulars.size();
    }
    return 0;
}

说明:调用onCreateViewHolder和onBindViewHolder方法获取由getItemCount方法返回的计数。由于您的代码始终返回0,因此不会调用这些方法,也不会在UI上填充list。

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

ImageViewHolder.prodName.setText(popularCur.getProduc_name());

您正在考虑将'ImageViewHolder'类的'prodName'变量视为静态变量,但并非如此。相反,应该是

holder.prodName.setText(popularCur.getProduc_name());