gpt4 book ai didi

java - 能够在 RecyclerView 中同时点击两个项目

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:18:14 25 4
gpt4 key购买 nike

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

例如:
假设您已经在触摸 ListView 中的一个项目,而在此期间您尝试触摸另一个它不允许您触摸的项目。 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());
}
}
}

最佳答案

我的 RecyclerView 是在 Java 中以编程方式添加的,而不是在 xml 中。我尝试了这个并且它有效:

mRecyclerView.setMotionEventSplittingEnabled(false);

如果你的 RecyclerView 是在 xml 中添加的,你可以尝试在你的 RecyclerView 中添加:

android:splitMotionEvents="false"

现在在recycler-list中当你点击一个项目不松手时,你不能点击另一个项目。

关于java - 能够在 RecyclerView 中同时点击两个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39722526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com