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()
到它。
我制作了一个 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()
到它。