gpt4 book ai didi

android - 单击项目时禁用 RecyclerView

转载 作者:行者123 更新时间:2023-11-29 15:02:15 25 4
gpt4 key购买 nike

我有一个回收器 View ,适配器中的每个条目都有一个简单的复选框。我在 RecyclerView 下方还有一个 Done 按钮,单击该按钮时,将启动一个 API 调用,其中包含用户已选中的所有项目。问题是在 api 调用返回(自然)和 Activity 完成之间有轻微的延迟,如果用户足够快,则允许用户点击任何复选框。

有没有办法禁用 RecyclerView 的触摸事件来防止这种情况发生?当单击完成按钮无效时,我尝试了执行以下操作的回调:

mRecyclerViewList.setClickable(false);
mRecyclerViewList.setEnabled(false);

我不想使用 onBindViewHolder 来实际禁用每个项目,因为这意味着重新加载整个 RecyclerView 以强制执行该方法。

最佳答案

在 RecyclervView 上放置一个空白的、可点击的透明 View 以捕获点击。当您的 API 返回时,将可见性设置为“消失”。

示例布局

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/frameLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="50dp"
android:background="#FFFFFFFF"
android:orientation="horizontal">

<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:paddingBottom="16dp"
android:paddingTop="16dp" />

<View
android:id="@+id/overlay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:visibility="gone" />
</FrameLayout>

代码中的某处

    // Block clicks on RecyclerView. overlay will consume clicks.
findViewById(R.id.overlay).setVisibility(View.VISIBLE);

// Re-enable clicks on RecyclerView
findViewById(R.id.overlay).setVisibility(View.GONE);

关于android - 单击项目时禁用 RecyclerView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42615334/

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