能够在RecyclerView中同时单击两个项目

Kik*_*iki 7 java android listview android-recyclerview

我在RecyclerView中有一个项目列表,我在onBindViewHolder中为每个视图设置了onClickListener.点击监听器工作正常,问题是我可以同时点击列表中的两个项目,它们都将运行他们的onClick方法.如果你有ListViews,如果你试图同时点击两个项目,它不允许你.

例如:
假设您已经触摸列表视图中的某个项目,并且在此期间您尝试触摸另一个项目,它将不会让您.Recyclerview允许这样做.

如何点击时,我们如何使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());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 13

我的RecyclerView以编程方式添加Java,但不是xml.我尝试这个,它的工作原理:

mRecyclerView.setMotionEventSplittingEnabled(false);
Run Code Online (Sandbox Code Playgroud)

如果您的RecyclerView是以xml格式添加的,您可以尝试在RecyclerView中添加它:

android:splitMotionEvents="false"
Run Code Online (Sandbox Code Playgroud)

现在,当您点击一个项目并且不放手时,在回收列表中,您无法单击另一个项目.