代码之家  ›  专栏  ›  技术社区  ›  Victor Attila Breelle

recylclerView上的声明ImageView(无法解析方法)

  •  0
  • Victor Attila Breelle  · 技术社区  · 7 年前

    我想在回收器视图中删除imageview,但我对“green=(imageview)FindViewById(R.id.statecolorG);”行中的方法“FindViewById”有问题

    public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
        private List<Requete> items;
        private RecyclerView recyclerView;
        private int itemLayout;
        private ImageView green;
    
    
        public RecyclerViewAdapter(List<Requete> items, int itemLayout) {
            this.items = items;
            this.itemLayout = itemLayout;
        }
    public void update(List<Requete> nimp)
    {
        items.clear();
        items.addAll(nimp);
        notifyDataSetChanged();
    }
        @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_view, parent, false);
            return new ViewHolder(v);
        }
    
        @Override
        public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
            Requete item = items.get(position);
            ViewHolder vh = (ViewHolder)holder;
            vh.primaryText.setText(Integer.toString(item.getState()));
            vh.primaryText.setText(item.getserviceName());
            vh.data = item;
            green = (ImageView) findViewById(R.id.statecolorG);
        }
    
        @Override
        public int getItemCount() {
            return items.size();
        }
    
        public static class ViewHolder extends SwipeToAction.ViewHolder<Requete>{
            public TextView primaryText;
    
            public ViewHolder(View itemView) {
                super(itemView);
                primaryText = (TextView) itemView.findViewById(R.id.titleItem);
            }
    
        }
    

    也许位置不对?

    3 回复  |  直到 7 年前
        1
  •  2
  •   Gabe Sechan    7 年前

    1) 永远不要在onBindViewHolder中调用findViewById。viewHolder的目的是保存所有这些视图。它应该在ViewHolder的构造函数中完成。

    2) 适配器没有findViewById函数,因为它不是视图组。您可能希望在ViewHolder构造函数中的itemView上调用它。

        2
  •  1
  •   Amit Joshi    7 年前

    在view holder类中声明图像视图

        public static class ViewHolder extends SwipeToAction.ViewHolder<Requete>{
            public TextView primaryText;
    
            public ViewHolder(View itemView) {
                super(itemView);
                primaryText = (TextView) itemView.findViewById(R.id.titleItem);
                green = (ImageView) itemView.findViewById(R.id.statecolorG);
    
           }
    
        3
  •  0
  •   cincy_anddeveloper    7 年前

    不能调用findViewById,因为它不是RecyclerView适配器上的函数,也不应该在适配器内部声明ImageView。它应该在ViewHolder中声明,然后在itemView上调用findViewById(),就像使用TextView一样,并将引用分配给“green”ImageView变量。注意:id为“statecolorG”的ImageView必须在同一布局文件“item_view”中声明。您正在onCreateViewHolder内部膨胀的xml。