我想在回收站视图中对图像视图进行delcare,但我在“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);
}
}
也许这个位置错了?
答案 0 :(得分:2)
1)你永远不应该在onBindViewHolder中调用findViewById。 viewHolder的目的是保存所有这些视图。它应该在ViewHolder的构造函数中完成。
2)适配器没有findViewById功能,因为它不是一个视图组。您可能希望在ViewHolder构造函数中的itemView上调用它。
答案 1 :(得分:1)
在视图持有者类
中声明您的图像视图 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);
}
答案 2 :(得分:0)
您无法调用findViewById,因为它不是RecyclerView适配器上的函数,也不应该在适配器内声明ImageView。它应该在您的ViewHolder中声明,然后在itemView上调用findViewById(),就像使用TextView一样,并将引用分配给&#39; green&#39; ImageView变量。注意:具有id&#39; statecolorG&#39;的ImageView必须在相同的布局文件中声明&#39; item_view.xml&#39;你在onCreateViewHolder里面膨胀。