Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使RecyclerView更新其布局?_Android_Android Recyclerview - Fatal编程技术网

Android 如何使RecyclerView更新其布局?

Android 如何使RecyclerView更新其布局?,android,android-recyclerview,Android,Android Recyclerview,我有一个RecyclerView,其中有一组自定义视图,这些视图在一段时间后可能会改变高度,因为它们包含异步加载图像的ImageViews。尽管我在ImageView上调用了forceLayout,并且RecyclerView是用setHasFixedSize(false)初始化的,。ImageView的所有容器父容器都设置了android:layout\u height=“wrap\u content” 如何使RecyclerView更新其布局?使用good'olListView这不是问题 如

我有一个
RecyclerView
,其中有一组自定义视图,这些视图在一段时间后可能会改变高度,因为它们包含异步加载图像的
ImageView
s。尽管我在
ImageView
上调用了
forceLayout
,并且
RecyclerView
是用
setHasFixedSize(false)
初始化的,
ImageView
的所有容器父容器都设置了
android:layout\u height=“wrap\u content”


如何使
RecyclerView
更新其布局?使用good'ol
ListView
这不是问题

如果所有图像同时更改,则可以使用
适配器中的
notifyDataSetChanged
用于
RecyclerView
,如果只有一个项目更改,则可以使用
notifyItemChanged(int position)
。这将告诉
RecyclerView
重新绑定特定的
视图

我遇到了同样的问题,我只是为ImageView设置了固定的宽度和高度。试试看,你会得到什么。你也可以使用一个lib,我使用Square-Picasso,我使用RecyclerView得到它。

主线程调用
notifyDataSetChanged()
notifyItemChanged(int-position)
方法的
RecyclerView.Adapter
。从
AsyncTask
调用它可能会导致主线程不更新
ImageView
s。最方便的方法是在activity/fragment中使用回调方法作为侦听器,并由
onPostExecute()中的
AsyncTask
调用它不管你在找什么职位 int firstPosition=linearLayoutManager.findFirstVisibleItemPosition();//这与child#0相同 int wantedChild=wantedPosition-firstPosition; 如果(wantedChild<0 | | wantedChild>=linearLayoutManager.getChildCount()){ w(标签,“无法获取所需位置的视图,因为它没有显示在屏幕上。”); 返回; } View wantedView=linearLayoutManager.getChildAt(wantedChild); mlayoutOver=(LinearLayout)wantedView.findViewById(R.id.layout_over); mlayoutPopup=(LinearLayout)wantedView.findviewbyd(R.id.layout\u弹出窗口); mlayoutOver.setVisibility(视图不可见); mlayoutpupp.setVisibility(View.VISIBLE);

这段代码为我工作。

谷歌终于在年解决了这一问题。在使用SDK管理器更新您的支持存储库后,通过在
build.gradle
中更新此行来解决此问题:

compile 'com.android.support:recyclerview-v7:23.2.0'

如何加载图像数据?异步加载是否来自
加载程序
?从
异步任务
?数据是否保存在
光标中?我想了解您是如何维护数据状态的。我类似于AsyncTask,它有一个回调()。在回调中,我尝试调用ForceLayout将代码带到这里。如何将适配器设置为RecyclerView,以及在何处和在哪个线程上设置notifyDataSetChanged()。23.1.0 support lib版本也存在同样的问题。我刚刚在“回收器”视图上设置了一个新的布局管理器。使用和高度固定不是一个选项。设计要求高度由图像高度确定。请注意此问题,因为当前调用notifyDataSetChanged可能会引发异常。这将更新整个recyclerview。如果它用光了平板电脑上的整个屏幕的图像,这将导致一个重大的性能问题,用户会注意到。当布局只有一小部分更改时,您应该避免更新整个recyclerview。这对列表底部的孩子不起作用。hey@Nilzor可以帮我吗
compile 'com.android.support:recyclerview-v7:23.2.0'