【问题标题】:Android Viewgroup IssuesAndroid 视图组问题
【发布时间】:2019-03-27 02:34:40
【问题描述】:

我在使用 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);




        }
    }

}

【问题讨论】:

  • 我认为问题出在您发送的上下文中。在下面查看我的答案。试试那个解决方案。
  • @g.brahmaDatta 先生不在此处上下文中检查他在项目计数中返回 0
  • 是的,好点@Ashvinsolanki
  • 你的问题解决了吗?

标签: android android-viewgroup


【解决方案1】:

问题来了

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

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

改变

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

getItemCount

int getItemCount ()

返回适配器持有的数据集中的项目总数。

【讨论】:

    【解决方案2】:

    试试这个解决方案

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

    【讨论】:

      【解决方案3】:

      优化@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 上填充列表。

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

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

      您将“ImageViewHolder”类的“prodName”变量视为静态变量,但事实并非如此。相反,它应该是

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

      【讨论】:

        猜你喜欢
        • 2011-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-18
        • 1970-01-01
        相关资源
        最近更新 更多