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'olListView
这不是问题 如果所有图像同时更改,则可以使用适配器中的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'