Articles of android recyclerview

Viewpager在RecyclerView行内不显示

我想做一个“照片细节”活动或片段,我在上面和下面显示照片aViewpPager,显示相关照片(2选项卡)的评论和喜欢的照片。 为了使屏幕“滚动”,所以我可以向上/向下滚动的评论和喜欢和左/右滑动我决定使用2行的RecyclerView: 行1:照片(ImageView)。 行2:SlidingTabLayout + ViewPager + FragmentPagerAdapter。 代码编译并运行,显示图像和slidingTabLayout而不是ViewPager。 所以我的两个主要问题是: 1-我的实现有什么问题 2-是否有一个替代或更好的解决scheme,我想实现? 注意:我不想使用带有header的listView。我想使用RecyclerView,因为从networking上添加顶部/底部元素更容易。 PhotoDetailsActivity.java public class MainActivity extends ActionBarActivity { RecyclerView recyclerViewPhotoDetails; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.recyclerViewPhotoDetails = (RecyclerView) this.findViewById(R.id.recycler_view_photo_details); this.recyclerViewPhotoDetails.setLayoutManager(new LinearLayoutManager(this)); this.recyclerViewPhotoDetails.setAdapter(new PhotoDetailsRecyclerAdapter(this.getSupportFragmentManager())); } } PhotosDetailsRecyclerAdapter.java public class PhotoDetailsRecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private static final int ROW_IMAGE = 0; private […]

以编程方式设置app:layout_behavior

我有一个recyclerview的协调员布局,我想以编程方式添加。 编程添加的原因是因为不同的片段会使协调器布局膨胀,可能会使用不同types的回收器视图。 通常对于一个recyclerview,为了设置这个行为,我将它添加到xml: app:layout_behavior="@string/appbar_scrolling_view_behavior" 这工作正常。 但是,我完全丧失了如何以编程方式创buildrecyclerviews并将其添加到framelayout时如何添加此行为: <?xml version="1.0" encoding="utf-8"?> <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:layout_width="match_parent" android:id="@+id/coordLayout" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:context=".MainActivity"> <android.support.design.widget.AppBarLayout android:id="@+id/app_bar" android:fitsSystemWindows="true" android:layout_height="@dimen/app_bar_height" android:layout_width="match_parent" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/toolbar_layout" android:fitsSystemWindows="true" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_scrollFlags="scroll|exitUntilCollapsed" app:contentScrim="?attr/colorPrimary"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_height="?attr/actionBarSize" android:layout_width="match_parent" app:layout_collapseMode="pin" app:popupTheme="@style/AppTheme.PopupOverlay" /> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <FrameLayout android:id="@+id/frameLayout" android:layout_width="match_parent" android:layout_height="wrap_content"> </FrameLayout> </android.support.design.widget.CoordinatorLayout>

在RecyclerView.Adapter中覆盖notifyItemChanged的animation

那么,我有一个适配器的RecyclerView,一切都很好。 ArrayList数据集中的项目正在定期更新。 所以项目和元素以及它们在列表中的位置都会改变。 这是通过简单的sorting和手动调用这些方法来实现的,无论什么时候发生: // swapping two items Collections.swap(items, i, j); itemsAdapter.notifyItemMoved(i, j); // adding a new one itemAdapter.notifyItemInserted(items.size()); // when updating valus itemAdapter.notifyItemChanged(i); 后者是我痛苦的原因。 每次更新项目时,都会触发一些“闪烁”animation。 我find了几个解决scheme: // disabling all animations recyclerView.getItemAnimator().setSupportsChangeAnimations(false); // or // setting the animation duration to zero, recyclerView.getItemAnimator().setChangeDuration(0); 但是这两个都会在物品移动(被交换)时杀死animation。 我只是想重写一个animation,并保持所有这些魔术。 有没有办法做到这一点? 如果它重写ItemAnimator,有没有人有一个简单的例子? 提前致谢!

装饰RecyclerView(使用GridLayoutManager)显示项目之间的分隔符

装饰RecyclerView具有这种外观和感觉的最好和最简单的方法是什么? 这里的主要挑战是在物品之间只有分隔物,而不是在物品和屏幕的左/右边界之间。 有任何想法吗?

当键盘打开时,Recyclerview不滚动到结束

我在我的应用程序中使用recylerview,每当新元素被添加到recyclerview,它通过使用滚动到最后一个元素 recyclerView.scrollToPosition(adapter.getCount()); 但是,无论何时键盘打开(由于editTextView),它调整视图和recyclerview变小,但不能滚动到最后一个元素。 android:windowSoftInputMode="adjustResize" 我什至试图用下面的代码来滚动到最后一个元素,但它没有工作 editTextView.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if(hasFocus){ recyclerView.scrollToPosition(chatAdapter.getItemCount()); } } }); 我可以尝试adjustPan移动锅,但它隐藏我的工具栏。 请提出任何方法来纠正这个问题。

RecyclerView.Adapter.notifyItemChanged()永远不会将有效内容传递给onBindViewHolder()

我正在尝试更新RecyclerView的ViewHolder ,而不必重新绑定整个事物。 根据文档,我应该通过调用RecyclerView.Adapter.notifyItemChanged(int position, Object payload)来做到这一点,其中payload是一个任意的对象,将传递给RecyclerView.Adapter.onBindViewHolder(VH holder, int position, List<Object> payloads) ,在那里我将能够更新ViewHolder。 但是,当我尝试这个, onBindViewHolder总是收到一个空的列表。 在这两个呼叫之间,有效载荷的内部清单被清除。 在RecyclerView的源代码中设置断点之后,这是因为重新布局,最终会调用RecyclerView.ViewHolder.clearPayload() 有没有人设法得到这个工作? 这是支持库中的一个错误还是我已经做了触发这两个函数之间的重新布局? 以下是有效负载清除时的堆栈跟踪: "<1> main@831692616832" prio=5 runnable java.lang.Thread.State: RUNNABLE at android.support.v7.widget.RecyclerView$ViewHolder.clearPayload(RecyclerView.java:8524) at android.support.v7.widget.RecyclerView$ViewHolder.resetInternal(RecyclerView.java:8553) at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4544) at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4461) at android.support.v7.widget.LayoutState.next(LayoutState.java:86) at android.support.v7.widget.StaggeredGridLayoutManager.fill(StaggeredGridLayoutManager.java:1423) at android.support.v7.widget.StaggeredGridLayoutManager.onLayoutChildren(StaggeredGridLayoutManager.java:610) at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2847) at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3145) at android.view.View.layout(View.java:14289) at android.view.ViewGroup.layout(ViewGroup.java:4562) at android.support.v4.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:581) at android.view.View.layout(View.java:14289) at android.view.ViewGroup.layout(ViewGroup.java:4562) at android.widget.FrameLayout.onLayout(FrameLayout.java:448) […]

Android:RecyclerView内容滚动后搞砸了

我使用RecyclerView来显示标记列表,每个标记的值显示为一个CardView。 但是,如下面的两个屏幕截图所示,向下滚动RecyclerView并向后滚动后,某些内容将会丢失。 滚动后红色矩形中的内容会丢失。 在滚动之前; 滚动后; 我想知道是否它是一个RecyclerView的错误,并find没有解决scheme后谷歌search。 所有的观点除了标题之外都是隐形的,它们的可见性取决于商标的价值。 有谁知道为什么会发生?

在android studio中预览水平的recyclerview

我发现如何使用预览列表项目 tools:listitem="@layout/my_item_layour" 但android studio预览recyclerview作为一个垂直列表。 有没有办法告诉Android Studio我将附加一个水平的LinearLayoutManager以便它可以预览一个水平列表?

Recyclerview适配器和滑翔 – 每4-5行相同的图像

我有这个问题 – 只是为了testing的目的,我添加ParseFile从接收列表中的一个ParseFile 。 而不是只显示在那一行,它显示每4-5行,有时更多,有时更less。 我认为回收利用观点与此有关。 奇怪的是,其他数据(从这个例子中删除)与positionvariables正常工作。 @Override public void onBindViewHolder(ViewHolder holder, int position) { if(parseList.get(position).get("logo") != null){ ParseFile image = (ParseFile) parseList.get(position).get("logo"); String url = image.getUrl(); Glide.with(context) .load(url) .placeholder(R.drawable.piwo_48) .transform(new CircleTransform(context)) .into(holder.imageView); } }

GridLayoutManager – 如何自动适应列?

我有一个显示卡片视图的GridLayoutManager的RecyclerView。 我想要根据屏幕大小重新排列卡(Google Play应用程序使用其应用程序卡来完成此类操作)。 这里是一个例子: 下面是我的应用程序现在的样子: 正如你所看到的,这些卡片只是拉伸,不适合从方向改变而成的空白空间。 那我该怎么做呢? 码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Json; using System.Threading; using System.Threading.Tasks; using Android.Media; using Android.App; using Android.Support.V4.App; using Android.Support.V4.Content.Res; using Android.Support.V4.Widget; using Android.Support.V7.Widget; using Android.Content; using Android.OS; using Android.Runtime; using Android.Util; using Android.Views; using Android.Widget; using Android.Net; using Android.Views.Animations; using Android.Graphics; using Android.Graphics.Drawables; using […]