Android - Recycler View onClick 监听器不工作

Android - Recycler View onClick Listener not Working

我制作了一个 RecyclerView 适配器并使用该适配器在回收器视图中膨胀数据,我以前使用 ListView onItemClickListner 的一般方法,但它似乎不适用于 RecyclerView,请任何人帮助我解决这个问题

我的 RecyclerView 适配器 class 是:

public class TimeAdaptra extends      
RecyclerView.Adapter<TimeAdaptra.RecyclerViewHolder> {
ArrayList<String> time, status;

public TimeAdaptra(ArrayList<String> title, ArrayList<String> dec) {
    this.time = title;
    this.status = dec;

}

@Override
public RecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.time_slice, parent, false);
    RecyclerViewHolder recyclerViewHolder = new RecyclerViewHolder(view);
    return recyclerViewHolder;
}

@Override
public void onBindViewHolder(RecyclerViewHolder holder, int position) {
    holder.myTitle.setText(time.get(position));
    holder.mydec.setText(status.get(position));
}

@Override
public int getItemCount() {
    return time.size();
}

public static class RecyclerViewHolder extends RecyclerView.ViewHolder {
    TextView myTitle;
    TextView mydec;

    public RecyclerViewHolder(View view) {
        super(view);
        myTitle = (TextView) view.findViewById(R.id.timee);
        mydec = (TextView) view.findViewById(R.id.status);
    }
}
}

我正在这样做 inflation :

public class Slots extends AppCompatActivity {
RecyclerView recyclerView;
RecyclerView.Adapter adapter;
RecyclerView.LayoutManager manager;
private ArrayList<String> Time = new ArrayList<String>();
private ArrayList<String> Status = new ArrayList<String>();


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_slots);

    Time.add("18:00");
    Status.add("Available");
    recyclerView = (RecyclerView) this.findViewById(R.id.timeslice);
    manager = new LinearLayoutManager(this);
    recyclerView.setLayoutManager(manager);
    recyclerView.setHasFixedSize(true);
    adapter = new TimeAdaptra(Time, Status);
    recyclerView.setAdapter(adapter);
    adapter.notifyDataSetChanged();

使 RecyclerViewHolder 像这样实现 View.OnClickListener:

  public static class RecyclerViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
        TextView myTitle;
        TextView mydec;

        public RecyclerViewHolder(View view) {
            super(view);
            myTitle = (TextView) view.findViewById(R.id.timee);
            mydec = (TextView) view.findViewById(R.id.status);
            myTitle.setOnClickListener(this);
            mydec.setOnClickListener(this);

        }

            @Override
            public void onClick(View v) {
                switch (v.getId()) {
                    case R.id.timee:
                   // do task
                    break;
                    case R.id.status:
                    //do task
                    break;
                    }
          }
    }

如果你想点击列表中的每一项,那么你应该得到 xml 你正在膨胀的根布局的 id 并且 setOnClickListener() 到它。