2017-03-05 84 views
1

对于适配器中的每个条目,我都有一个带简单复选框的回收站视图。我还有一个RecyclerView下面的Done按钮,点击后,将启动一个API调用,其中包含用户已经检查过的所有项目。问题在于api调用返回(自然)和活动完成之间有一点点延迟,如果用户足够快,允许用户点击任何复选框。单击项目时禁用RecyclerView

有没有一种方法可以禁用RecyclerView的触摸事件来防止这种情况发生?我已经尝试了回调,做当完成按钮被点击没有效果如下:

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

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

回答

2

在RecyclervView上放置一个空白的可点击透明视图来捕获点击。当您的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); 
+0

机器人:可点击= “true” 是很重要 – Amit

相关问题