Articles of android recyclerview

如何支持RecyclerView的dpad控件

我目前正尝试将Android移动应用移植到Android TV。 我有一个RecyclerView似乎在我的Android TV应用程序中正确显示。 我为我的RecyclerView使用linearLayout。 但我似乎无法使用dpad控件在RecyclerView内导航。 有任何想法吗? 这里是有关的XML: <android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/RecyclerView" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="left" android:background="@color/nav_bg" android:scrollbars="vertical" tools:showIn="@layout/activity_content" />

具有不同高度项目的RecyclerView:滚动条

我有一个RecyclerView与滚动条不同高度的项目。 由于项目的高度不同,滚动条会根据当前显示的项目更改垂直大小(请参阅屏幕截图)。 我创build了一个示例项目,在这里显示问题。 有没有人有同样的问题,并修复它? 我怎样才能覆盖滚动条的高度和位置的计算来提出一个自己的实现? 编辑:滚动条的位置和高度可以通过覆盖RecyclerViews computeVerticalScrollOffset , computeVerticalScrollRange和computeVerticalScrollExtent来控制。 我不知道如何实现这些使滚动条与dynamic项目高度正常工作。 我认为,问题是RecyclerView根据当前可见的项目估计所有项目的总高度,并相应地设置滚动条的位置和高度。 解决这个问题的一个方法可能是更好地估计所有物品的总高度。

创build一个可扩展的RecyclerView

我正在尝试执行一个像我的草图如下的回收站: 这个想法是,有一个父列表,当父列表中的列表项被点击,该列表项显示一个包含它自己的数据的子列表。 当在子列表中轻敲列表项时,该子项的值将被反映,并更新父项列表项中父项的值。 我试图让它在过去三天工作无济于事。 我尝试使用AdvancedReyclerview库,但对于像我这样的初学者来说,这是一个巨大的混乱的东西,尤其是在传递数据时没有意义。 我复制并粘贴了我需要的最小工作版本的文件,但我不知道如何将数据传递到recyclerview,以及如何使用新select的值更新它。 甚至有可能做我想做的事情,还是我在这里深深地陷入了困境? 如果还是难以理解的话,我可以多解释一下。 编辑:有人build议我这样做与ExpandableListView而不是RecyclerView。 对此有什么想法?

如何在RecyclerView中保留ViewPager状态?

我的RecyclerView包含许多ViewPagers。 每个ViewPager内的页面数量是不变的(2)。 我使用PagerAdapter。 当我滚动我的RecyclerView,ViewPagers失去了他们的状态,并重置到第1页。 我想知道如何保留每个ViewPager的最后select的页面。 例如:1)我滚动到页面2在我的第一个ViewPager 2)我滚动RecyclerView到底部,我的第一个ViewPager出屏幕。 3)我滚动到ViewPager的顶部,所以我的第一个ViewPager再次加载。 4)我的第一个ViewPager设置为第一页,而不是页面2,我最后滚动到。 在RecyclerView中有n个ViewPagers,我想保留所有的状态,不pipeRecyclerView是否重装。 如何解决这个逻辑?

可滚动CardView与RecyclerView里面

我想实现一个屏幕,我有一个包含RecyclerView的卡片视图。 CardView应该与回收站视图内容的高度相同,这意味着如果RecyclerView有less量项目,我应该看到卡片的底部angular落和底部阴影,但是如果RecyclerView有很多项目,则卡片视图应该使用RecyclerView“滚动”,在RecylerView的底部有Cardview的底angular和阴影。 在这里,当RecyclerView处于顶部时应该看起来如何: 当用户开始滚动时,使用RecyclerView滚动,顶angular消失: 最后,当用户到达RecyclerView的底部时,CardView的底部angular落和阴影出现: 从现在起,我设法通过将RecyclerView放置在CardView和CardView内部的NestedScrollView中来实现一个工作实现,但是这打破了手势。 <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:clipChildren="false" android:id="@+id/containerLayout" android:layout_height="match_parent" android:layout_width="match_parent" android:orientation="vertical" tools:ignore="MissingPrefix"> <android.support.v4.widget.NestedScrollView android:clipToPadding="false" android:layout_height="match_parent" android:layout_width="match_parent" android:paddingBottom="16dp" android:paddingLeft="85dp" android:paddingRight="85dp" android:paddingTop="16dp"> <android.support.v7.widget.CardView android:layout_height="wrap_content" android:layout_width="match_parent" app:cardBackgroundColor="?android:attr/windowBackground"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_height="wrap_content" android:layout_width="match_parent"/> </android.support.v7.widget.CardView> </android.support.v4.widget.NestedScrollView> </android.support.design.widget.CoordinatorLayout> 你对我如何实现这样的devise有任何提示或想法吗? 我想CoordinatorLayout可以帮助我,但我找不到任何东西… 谢谢

在ViewHolder中绑定

这将是理论上的问题。 就像我们每个人在应用程序的许多部分使用RecyclerView一样。 有时RecyclerView包含不同的项目,不仅仅是图像,而是广告,提示等。这就是为什么我们可以在Adapter中使用getViewType()方法。 但是,当我们有很多viewTypes和绑定在适配器不是优雅的问题发生。 所以这里是一个问题, 在ViewHolder中绑定数据是否好又好? 比方说,我们有应用程序的列表。 每个应用程序都有简单的名字。 我们的ViewHolder如下所示: class AppViewHolder extends RecyclerView.ViewHolder { public TextView nameText; AppViewHolder(View itemView) { super(itemView) nameText = (TextView) itemView.findViewById(R.id.text_name); } } 现在我们可以添加绑定方法: public void bind(App app) { nameText.setText(app.getName()); } 这是不错的模式? 另一种解决scheme是使用ViewModel。 因为我们在RecyclerView中有不同的项目,所以我们的Adapter可以包含每个ViewModel基类的类的列表。 所以基础课是: class RecyclerViewItem {} 现在是ViewModel for App的类。 class AppRecyclerViewItem extends RecyclerViewItem { App app; … } 和我们的适配器只是有RecyclerViewItems列表: […]

当使用Runnable从Handler中使用notifyItemChanged时,RecyclerView会崩溃

我使用RecyclerView作为列表来显示可以下载的歌曲。 每个项目在其View都有ProgressBar 。 下载开始后,我使用Handler通知每个项目更新ProgressBar以显示歌曲下载进度。 Q1。 这是一个正确的方法来做到这一点吗?还有没有其他的方法可以更恰当地做到这一点。 Q2。 当我们使用adapter.notifyItemChanged(position);时,RecyclerView会崩溃adapter.notifyItemChanged(position); 更新单个项目的内容。 它使用Runnable从Handler调用。 但是,日志不显示我的代码的任何痕迹。 为什么? 以下是这个问题的日志: 05-06 19:09:45.804: E/AndroidRuntime(32115): FATAL EXCEPTION: main 05-06 19:09:45.804: E/AndroidRuntime(32115): java.lang.IllegalArgumentException: Tmp detached view should be removed from RecyclerView before it can be recycled: ViewHolder{41b7bec0 position=6 id=-1, oldPos=-1, pLpos:-1 update changed tmpDetachedundefined adapter position no parent} 05-06 19:09:45.804: E/AndroidRuntime(32115): at android.support.v7.widget.RecyclerView$Recycler.recycleViewHolderInternal(RecyclerView.java:3861) 05-06 19:09:45.804: […]

RecyclerView的行是洗牌和改变图像:android

问题的变化与其他问题一样。 我的问题是当回收站视图滚动向上和向下 当快速滚动并返回到原始位置时,行项目会更改它的位置。 行项目使得它的一部分修复为背景 这里我如何设置我的Recycler视图在片段。 private void setRecyclerView() { recyclerView.setHasFixedSize(true); StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(2, 1); recyclerView.setLayoutManager(layoutManager); adapter = new TwitterTweetAdapter(getActivity()); // setting every thing false in item animator recyclerView.setItemAnimator(new RecyclerView.ItemAnimator() { @Override public void runPendingAnimations() { } @Override public boolean animateRemove(RecyclerView.ViewHolder viewHolder) { return false; } @Override public boolean animateAdd(RecyclerView.ViewHolder viewHolder) { return false; […]

RecyclerView重力

我有一个recylcler视图,但似乎没有实现setGravity方法。 我的列表是水平alignment的,但我需要它居中。 我怎么做? fragment_my_zone_item_controlled.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/dark_grey"> <FrameLayout android:id="@+id/fragment_my_zone_item_controlled_content" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/fragment_my_zone_item_controlled_tabs" android:layout_marginBottom="12dp" android:layout_marginTop="12dp" /> <android.support.v7.widget.RecyclerView android:id="@+id/fragment_my_zone_item_controlled_tabs" android:layout_width="match_parent" android:layout_height="44dp" android:background="@color/action_bar_color" android:scrollbars="none" /> </RelativeLayout> 这是它的样子,我需要它被集中 感谢你们

在回收站视图片段中执行上下文动作模式的问题

我从一堆教程中一起入侵了我的第一个应用程序。 在他们中的一个的帮助下,我在主要活动使用的片段内实现了一个RecyclerView。 现在我发现了另一个教程 ,我想用它来实现与上下文动作模式的多选。 最大的问题是,教程没有使用片段。 我试图重写代码以适应片段。 我现在在一个点,我没有在Android Studio中的任何错误,并运行应用程序,但是当我真的做LongClickselect一个项目,它崩溃与NullPointerException: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.view.ActionMode.setTitle(java.lang.CharSequence)' on a null object reference 我完全失去了为什么会发生这种情况,以及一般的多选题。 我认为每个涉及的类的相关部分是: Adapter.java: public class Adapter extends SelectableAdapter<Adapter.ViewHolder> { private ArrayList<Meal> items = new ArrayList<>(); private Context context; private ViewHolder.ClickListener clickListener; public Adapter(ViewHolder.ClickListener clickListener) { super(); this.clickListener = clickListener; } @Override public ViewHolder onCreateViewHolder(ViewGroup […]