我无法更改 RecyclerView 的可见性

I can't change the visibility of a RecyclerView

我正在尝试将 RecyclerView 的可见性更改为 View.GONE。但是,没有发生任何变化:

@Override
public boolean onQueryTextSubmit(String query) {
      runOnUiThread(new Runnable() {
           @Override
            public void run() {
               list.setVisibility(View.GONE);
                }
            });
      if (list == null){
        throw new NullPointerException();
      }

视图如下:

<android.support.v7.widget.RecyclerView
            android:id="@+id/allUsers"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_alignParentStart="true"
            android:layout_below="@+id/toolbar_container" />

删除 runOnUiThread 无效,list.invalidate() 也无效。什么都没有崩溃。这是在一个内部class。我做错了什么?

事实证明,当您从内部 class 访问变量时,编译器应该说:

Variable 'x' is accessed from an inner class, needs to be declared final

出于某种原因 我没有收到 comile 时间错误。即使变量是在方法中声明的。

因此,请确保您从内部 class 访问的变量声明为 final,如下所示:

final X y;

而不是这样:

X y;

其中 X 是类型,y 是变量的名称。

Why are only final variables accessible in anonymous class?