【发布时间】:2017-07-27 07:56:43
【问题描述】:
我是 android 开发的新手,我正在尝试创建一个自定义 adpater 来为 RecyclerView 提供一个仅包含图像和文本视图的视图。
但是,我正在尝试为 onBindViewHolder(VH, int) 定义一个简单的扩展 ViewHolder,而 android studio 根本不会采用自定义 ViewHolder,'MyViewHolder' - 说 “该方法不会覆盖来自它的超类。”
如果我把参数变成一个普通的 RecyclerView.ViewHolder 就好了……但是我需要 MyViewHolder 中的额外变量。
最后,按照N.T. 的建议,我尝试更改类的“扩展”声明,但没有任何效果。
拜托,任何帮助都会很棒!
public class ProductAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private ArrayList CategoryNames;
private ArrayList CategoryImages;
private Context Context;
public ProductAdapter(Context context, ArrayList categoryNames, ArrayList categoryImages){
this.Context = context;
this.CategoryNames = categoryImages;
this.CategoryImages = categoryImages;
}
private class MyViewHolder extends RecyclerView.ViewHolder {
// initialise the item view's
TextView name;
ImageView image;
private MyViewHolder(View itemView) {
super(itemView);
// get the reference of item view's
name = (TextView) itemView.findViewById(R.id.name);
image = (ImageView) itemView.findViewById(R.id.image);
}
}
@Override
public int getItemCount() {
return CategoryNames.size();
}
@Override
public void onBindViewHolder(MyViewHolder holder, final int position) {
// set the data in items
holder.name.setText(CategoryNames.get(position).toString());
holder.image.setImageResource(CategoryImages.get(position));
// implement setOnClickListener event on item view.
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// display a toast with person name on item click
Toast.makeText(Context, CategoryNames.get(position).toString(),
Toast.LENGTH_SHORT).show();
}
});
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
// infalte the item Layout
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_product, parent, false);
// set the view's size, margins, paddings and layout parameters
MyViewHolder vh = new MyViewHolder(v); // pass the view to View Holder
return vh;
}
}
【问题讨论】: