Android 无法在RecyclerView中实现setClickListener()方法
我使用RecyclerView和Adapter,我使用setClickListener()单击视图中的项,它将转换到另一个活动。但是我面临着关于ItemClickListener接口类的问题 我的接口类:Android 无法在RecyclerView中实现setClickListener()方法,android,android-recyclerview,adapter,Android,Android Recyclerview,Adapter,我使用RecyclerView和Adapter,我使用setClickListener()单击视图中的项,它将转换到另一个活动。但是我面临着关于ItemClickListener接口类的问题 我的接口类: public interface ItemClickListener { void onClick(View view, int position); } 我的适配器: public class RecyclerViewCategoryAdapter extends RecyclerV
public interface ItemClickListener {
void onClick(View view, int position);
}
我的适配器:
public class RecyclerViewCategoryAdapter extends RecyclerView.Adapter<RecyclerViewCategoryAdapter.ViewHolder> {
Context context;
ImageLoader imageThumbLoader;
private ItemClickListener clickListener;
public RecyclerViewCategoryAdapter(ArrayList<HashMap<String, String>> getCarData, Context context){
super();
this.getCarData = getCarData;
this.context = context;
}
@Override
public RecyclerViewCategoryAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_car_info, parent, false);
RecyclerViewCategoryAdapter.ViewHolder viewHolder = new RecyclerViewCategoryAdapter.ViewHolder(v);
return viewHolder;
}
@Override
public void onBindViewHolder(RecyclerViewCategoryAdapter.ViewHolder viewholder, int position) {
...
}
public int getDataAdapter() {
return getCarData == null ? 0 : getCarData.size();
}
@Override
public int getItemCount() {
return getDataAdapter(); // + 1;
}
public void setClickListener(ItemClickListener itemClickListener) {
this.clickListener = itemClickListener;
}
class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public TextView titleName;
public NetworkImageView imageThumb;
public ViewHolder(View itemView) {
super(itemView);
titleName = (TextView) itemView.findViewById(R.id.titleName);
imageThumb = (NetworkImageView) itemView.findViewById(R.id.imageThumb);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View view) {
if (clickListener != null) clickListener.onClick(view, getAdapterPosition());
}
}
}
编译器发生错误,消息(已更新):
如何解决这个问题?非常感谢 您的活动需要实现接口
public class CategoryCarActivity extends AppCompatActivity implements
AbsListView.OnScrollListener, AbsListView.OnItemClickListener,
ItemClickListener {
public void onClick(View view, int position) {
// do your stuff here.
}
===============
若要修复最新问题,必须重写活动中接口中声明的抽象方法。为此,请更换:
public void onClick(View view) {
Intent i = new Intent(getApplicationContext(), DetailListCarActivityDemo1.class);
String car_id = ((TextView) view.findViewById(R.id.manufacturer_id)).getText().toString();
String price = ((TextView) view.findViewById(R.id.price)).getText().toString();
Toast.makeText(getApplicationContext(), "Car Id: " + car_id + ", Price: " + price, Toast.LENGTH_SHORT).show();
i.putExtra("car_id", car_id);
i.putExtra("price", price);
Log.i("Car ID: ", car_id);
Log.i("Price: ", price);
startActivity(i);
}
与:
谢谢@Charlie:我已经按照您的建议进行了更新,但它出现了新的错误对不起,我在onClick中添加了更多参数:“int position”,它成功了!非常感谢!精彩:)我编辑了我的答案,把它也包括在内。
Class 'CategoryCarActivity' must either be declared abstract or implement abstract method 'onClick(View, int)' in 'ItemClickListener'
public class CategoryCarActivity extends AppCompatActivity implements
AbsListView.OnScrollListener, AbsListView.OnItemClickListener,
ItemClickListener {
public void onClick(View view, int position) {
// do your stuff here.
}
public void onClick(View view) {
Intent i = new Intent(getApplicationContext(), DetailListCarActivityDemo1.class);
String car_id = ((TextView) view.findViewById(R.id.manufacturer_id)).getText().toString();
String price = ((TextView) view.findViewById(R.id.price)).getText().toString();
Toast.makeText(getApplicationContext(), "Car Id: " + car_id + ", Price: " + price, Toast.LENGTH_SHORT).show();
i.putExtra("car_id", car_id);
i.putExtra("price", price);
Log.i("Car ID: ", car_id);
Log.i("Price: ", price);
startActivity(i);
}
@Override
public void onClick(View view, int position) {
Intent i = new Intent(getApplicationContext(), DetailListCarActivityDemo1.class);
String car_id = ((TextView) view.findViewById(R.id.manufacturer_id)).getText().toString();
String price = ((TextView) view.findViewById(R.id.price)).getText().toString();
Toast.makeText(getApplicationContext(), "Car Id: " + car_id + ", Price: " + price, Toast.LENGTH_SHORT).show();
i.putExtra("car_id", car_id);
i.putExtra("price", price);
Log.i("Car ID: ", car_id);
Log.i("Price: ", price);
startActivity(i);
}