java能够在RecyclerView中同时单击两个项目
我在RecyclerView中有一个项目列表,我在onBindViewHolder中为每个视图设置了onClickListener。click侦听器工作得很好,问题是我可以同时单击列表中的两个项目,它们都将运行onClick方法。当您有ListView时,如果您试图同时单击两个项目,则不允许
例如:
假设您已经在listview中触摸了一个项目,在此期间您尝试触摸另一个项目,但它不允许您触摸。回收视图允许这样做
单击时,如何使RecyclerView像ListView一样工作
下面是我的实现
public class DataCardAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context mContext;
private ArrayList<Data> mDatas = new ArrayList<>();
private Data mData;
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View card = LayoutInflater.from(mContext).inflate(R.layout.card, parent, false);
return new DataCardViewHolder(mContext, card, mData);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
Data data = mDatas.get(position);
((DataCardViewHolder )holder).configureDataCard(data);
}
public static class DataCardViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
private Context mContext;
private Data mData;
public DataCardViewHolder(Context context, View view, Data data) {
super(view);
mContext = context;
mData= data;
}
public void configureDataCard(final Data data) {
mData= data;
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Log.v("DataCardViewHolder","onClick with data: " + mData.getData().toString());
}
}
}
# 1 楼答案
我的RecyclerView是以编程方式添加到Java中的,而不是xml。我试了一下,效果很好:
如果您的RecyclerView是外接程序xml,您可以尝试在RecyclerView中添加以下内容:
现在,在回收者列表中,当你点击一个项目而不放手时,你不能点击另一个项目
# 2 楼答案
不幸的是,
RecyclerView
将无法为您处理此问题。创建一个超时的Handler