我无法更改 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?
我正在尝试将 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?