Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无法在RecyclerView中实现setClickListener()方法_Android_Android Recyclerview_Adapter - Fatal编程技术网

Android 无法在RecyclerView中实现setClickListener()方法

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

我使用RecyclerView和Adapter,我使用setClickListener()单击视图中的项,它将转换到另一个活动。但是我面临着关于ItemClickListener接口类的问题

我的接口类:

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);
}