我是android开发的新手,我正在尝试创建一个自定义的适配器,为RecyclerView提供一个只包含一个图像和一个文本视图的视图。
但是,我试图为onBindViewHolder(VH,int)定义一个简单的扩展ViewHolder,而Android studio根本不会采用自定义ViewHolder,'MyViewHolder' - 说“该方法不会覆盖其超类中的方法。
如果我把参数变成一个普通的RecyclerView.ViewHolder就可以了……但是我需要在MyViewHolder中添加额外的变量。
最后,根据N.T.的建议,我尝试修改类的“extends”声明,但没有任何效果。
请,任何帮助将是巨大的!
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;
}
}
你可以这样写
public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.MyViewHolder> {
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;
}
}
改变
public class ProductAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolderr> {
自
public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.MyViewHolder>
现在可以了
英文原文:http://emberjs.com/guides/models/customizing-adapters/ 在Ember Data中,处理与后台数据仓库通信的逻辑是通过Adapter来完成的。Ember Data适配器内置了一些关于REST API的假定。如果后台的实现与Ember Data假定的惯例不同,那么通过扩展缺省的适配器可能很容易的实现。 有时因为一些原因需要自定义适配器,例
Ember.js适配器指定如何在后端数据存储中保存数据,例如URL格式和REST API标头。 默认的Ember适配器包含一些REST API的内置假设。 这些假设有助于更轻松,更好地构建Web应用程序。 可以使用以下命令创建适配器 - ember generate adapter adapter-name 运行上面的命令时,它将显示以下行 - import DS from 'ember-dat
我需要使用 restlet 客户端放置以下 rest 请求: 我可以在一个单独的调用中获取XToken,但是在当前的调用中,我无法在我的ClientResource对象中设置“Authorization”头。 有人可以建议我需要为我拥有的以下代码行添加哪些代码: 在restlet中创建和添加“Authorization”标头会导致restlet客户端库中出现错误。 提前谢谢 阿希什·夏尔马
主要内容:创建自定义适配器,注册自定义适配器,使用适配器Gson使用其内置适配器执行对象的序列化/反序列化。 它也支持自定义适配器。 让我们来讨论如何创建一个自定义适配器以及如何使用它。 创建自定义适配器 通过扩展类并传递目标类型的对象来创建自定义适配器。 重写读写方法分别执行自定义的反序列化和序列化。 注册自定义适配器 使用注册自定义适配器并使用创建一个Gson实例。参考以下实现代码 - 使用适配器 Gson现在将使用自定义适配器将Json文本转换为
我使用一个API,它以数组的形式返回数据,比如这个JSON字符串(我们称之为“任务”) 我想将这个响应解析为一个列表。所以我已经用生成的适配器创建了相应的数据类 我的改装服务是这样的 但我想使用容器类型,例如: 作为网络响应结果。这可能不创建自定义adpter或者我将需要创建一个自定义适配器并将其传递给moshi构建器吗?
问题内容: 这是我遵循的使用自定义Listview适配器的教程。我遇到的问题是,当我尝试清除适配器时,应用程序崩溃并抛出 更新的代码: 问题答案: 环顾四周,似乎是使用数组初始化适配器。请参阅带有ArrayAdapter.remove的UnsupportedOperationException和无法在ListView中修改ArrayAdapter:UnsupportedOperationExcep