Articles of android recyclerview

材料devisebuild议的列表与头像,文字和图标

我想创buildMaterial Designed Android应用程序,我试图遵循所有Google关于为新的RecylcerView制作漂亮布局的build议。 RecyclerView具有头像ImageView ,标题和字幕TextView和动作图标ImageView 。 我应该把什么值放在ImageViews适合的width和height所以它支持不同的屏幕大小和密度,以及我应该从系统图标包中select哪些大小的drawables? 材料devise的图标-1.0.1 列表build议: ??? 在XML代码是未知的事情,我不知道该放什么: XML: <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:card_view="http://schemas.android.com/apk/res-auto" android:id="@+id/card_view_friend" android:layout_width="wrap_content" android:layout_height="wrap_content" card_view:cardCornerRadius="4dp" card_view:cardUseCompatPadding="true"> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content">??? <ImageView android:id="@+id/friend_profile_picture" android:layout_width="40dp"??? android:layout_height="40dp"??? android:layout_alignParentLeft="true" android:layout_margin="16dp" android:layout_centerVertical="true" android:src="@drawable/ic_person_grey600_48dp"/>??? <TextView android:id="@+id/friend_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toLeftOf="@+id/friend_online_imageview" android:layout_toRightOf="@+id/friend_profile_picture" android:paddingTop="20dp" android:text="@string/plain_text_for_preview" android:textSize="16sp"/> <TextView android:id="@+id/friend_state" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/friend_name" android:layout_toLeftOf="@id/friend_online_imageview" android:layout_toRightOf="@+id/friend_profile_picture" android:paddingBottom="20dp" android:text="@string/plain_text_for_preview" android:textSize="14sp"/> <ImageView […]

在Recycler View的情况下,什么是等价的listview.setSelection

在ListView的情况下,如果我们想要select一个特定的项目,我们使用“setSelection”方法。 我们如何做到这一点的情况下回收查看

RecyclerView适配器notifyDataSetChanged停止花哨的animation

我正在构build基于RecyclerView的组件,允许用户通过拖放来重新sorting项目。 一旦我在DragListener一侧,我需要它在适配器中的位置来执行正确的移动,但我只能访问视图。 所以这里是我在适配器视图绑定中所做的: @Override public void onBindViewHolder(ViewHolder viewHolder, int position) { Track track = mArray.get(position); viewHolder.itemView.setTag(R.string.TAG_ITEM_POSITION, position); } 这对你来说似乎是正确的吗? 因为如果我移动这样的项目: public void move(int from, int to){ Track track = mArray.remove(from); mArray.add(to, track); notifyItemMoved(from, to); } 然后位置标记不正确了,如果我notifyDataSetChanged(),我失去了花式animation。 任何build议?

有没有什么办法在代码中启用RecyclerView滚动条?

正如我们所看到的,RecyclerView比ListView更有效,所以我更喜欢在我的项目中使用它。 但最近我把它放在我的自定义ViewGroup中时遇到了麻烦。 RecyclerView很容易在xml中设置滚动条,如下所示: <android.support.v7.widget.RecyclerView android:id="@+id/recycler_view" android:scrollbars="vertical" android:layout_width="match_parent" android:layout_height="match_parent" /> 但我真的找不到任何方法来设置RecyclerView代码中的滚动条,我试过的是: mRecyclerView.setVerticalScrollBarEnabled(true); 然后我在Android的文档中看到了这个 。 所以我试图做我自己的LayoutManager,并覆盖我认为我需要的function。 但最后我失败了。 所以谁能告诉我,我应该如何使自己的LayoutManager或只是给我一个其他的解决scheme。 谢谢!

如何select性地装饰RecyclerView项目

我从这个要点创build一个ItemDecoration的子类: https : ItemDecoration 如何使它只装饰具有一定条件的物品? 例如,只装饰具有某些位置的项目,ViewHolder的types等。 我已经用这段代码修改了上面提到的要点(加上对已弃用的Android API的一些更改),但是所有的项目都被装饰了: public boolean isDecorated(View view, RecyclerView parent) { RecyclerView.ViewHolder holder = parent.getChildViewHolder(view); return holder instanceof MenuIconViewHolder || holder instanceof MenuDetailViewHolder; } @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { if (isDecorated(view, parent)) { if (mOrientation == VERTICAL_LIST) { outRect.set(0, 0, 0, mDivider.getIntrinsicHeight()); } else […]

将项目分组到CardView的最佳做法是什么?

CardView通常用来装饰一个元素。 但是有时候你需要把这个小部件包装好几个项目。 例如,在收件箱应用程序中。 那么做这件事的最好方法是什么? 它可以通过自定义布局pipe理器甚至自定义的ItemDecoration来实现。 自定义LayoutManager的实现不是一件容易的事情(完全支持animation,项目装饰等)。 在第二个选项中,边界的绘制必须手动实现,忽略CardView(和Android-L标高)的实现。

无法在滚动callbackrecyclerview-v7:24.2.0中调用notifyItemInserted方法

最近,我将recyclerview-v7:23升级到recyclerview-v7:24.2.0 。 我的应用程序有一个无尽的滚动列表。 当我将加载视图添加到RecyclerView (空对象,这意味着加载,id 0是空的,-1是页面的结束),它的工作正常之前(recyclerview-v7:23),但突然我有这样的错误,不知何故我的负载显示两次,然后当它删除一个,有一个加载,仍然可见的顶部。 W/RecyclerView: Cannot call this method in a scroll callback. Scroll callbacks might be run during a measure & layout pass where you cannot change the RecyclerView data. Any method call that might change the structure of the RecyclerView or the adapter contents should be postponed to the next frame.java.lang.IllegalStateException: […]

了解RecyclerView setHasFixedSize

我有一些麻烦了解setHasFixedSize() 。 我知道,当RecyclerView的大小没有改变时,它被用于优化,从文档。 这是什么意思? 在大多数情况下, ListView几乎总是有固定的大小。 在什么情况下,它不会是一个固定的大小? 这是否意味着它在屏幕上占有的实际房地产会随着内容而增长?

在android 5上共享元素活动转换

从一个Activity到另一个Activity时,我想设置共享元素转换。 第一个活动有一个RecyclerView与项目。 当一个项目被点击时,该项目应该animation到新的活动。 所以我在最终的活动视图和回收视图项目视图中都设置了android:transitionName =“item”。 进入下一个活动时,我也使用这个代码: this.startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this, itemView, "boomrang_item").toBundle()); 点击一个项目时,它会正确转换并显示新的视图。 这真的很好。 但是,当我点击后退button。 有时它可以正常工作,但大部分时间我的活动崩溃与以下stacktrace: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.ViewGroup.transformMatrixToGlobal(android.graphics.Matrix)' on a null object reference at android.view.GhostView.calculateMatrix(GhostView.java:95) at android.app.ActivityTransitionCoordinator$GhostViewListeners.onPreDraw(ActivityTransitionCoordinator.java:845) at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:847) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1956) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5779) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767) at android.view.Choreographer.doCallbacks(Choreographer.java:580) at android.view.Choreographer.doFrame(Choreographer.java:550) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5221) […]

RecyclerView不按预期滚动

我有一个项目,我使用水平回收视图,我想中心一个元素。 我的执行工作,但不是在任何情况下检查这个GIF在这里: 正如你可能会注意到,如果我从左边来,它会正确滚动。 如果我来自正确的话,它会大量涌现,我不知道如何停止,也不知道如何解决这个问题。 我在这里把我的代码分成这个例子: public class DemoActivity extends ActionBarActivity implements View.OnClickListener { private static final int JUMP_TO_LEFT = MyAdapter.NON_VISIBLE_ITEMS + MyAdapter.VISIBLE_ITEMS – 1; private static final int JUMP_TO_RIGHT = MyAdapter.NON_VISIBLE_ITEMS; private LinearLayoutManager mLayoutManager; private RecyclerView mRecycler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_demo); findViewById(android.R.id.button1).setOnClickListener(this); mRecycler = (RecyclerView)findViewById(R.id.recycler); MyAdapter mAdapter = new MyAdapter(); mLayoutManager […]