Articles of android recyclerview

如何从右到左用GridLayoutManager填充RecyclerView

我正在尝试使用GridLayoutManager将一些数据填充到RecyclerView : GridLayoutManager layoutManager = new GridLayoutManager(this, 3, GridLayoutManager.VERTICAL, false); 这将从左到右将数据填充到网格中。 第一项将被放入左上角等地方。 但我正在开发的应用程序是为RTL语言设计的,所以我需要从右到左填充它。 我试图将最后一个参数更改为true 。 但它只是将RecyclerView向下滚动。 另外,为RecyclerView设置layoutDirection属性不起作用(不考虑我的min API为16,并且为API17 +添加了此属性): 如何使用RecyclerView创建从右到左填充的网格?

RecyclerView:获取位置并切换到活动

如何获取在RecyclerView行中单击的项目的位置,而不是在onClick方法中创建活动的意图? 这是我的适配器: public class SergejAdapter extends RecyclerView.Adapter{ private LayoutInflater inflater; List data= Collections.emptyList(); public SergejAdapter(Context context, List data){ inflater = LayoutInflater.from(context); this.data=data; } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = inflater.inflate(R.layout.navigation_drawer_custom_row,parent,false); MyViewHolder holder= new MyViewHolder(view); return holder; } @Override public void onBindViewHolder(MyViewHolder holder, int position) { Information current=data.get(position); holder.title.setText(current.title); } @Override […]

Recycleview显示不同的视图types

我正在使用recycleview来显示列表。 我想知道我们如何展示不同types的观点? 如同,不同的ViewHolders int在同一个适配器中 在简单的listview中我们使用了getItemViewType(),在recycleview中有什么不同之处?

渲染问题:Android Studio 1.1.0中android.support.v7.widget.RecyclerView的java.lang.NullPointerException

我最近更新了android sdk到api 22和android studio 1.1.0。 之后我在RecyclerView上出现渲染问题。 这是我得到的 java.lang.NullPointerException at android.support.v7.widget.RecyclerView.computeVerticalScrollRange(RecyclerView.java:1216) at android.view.View.onDrawScrollBars(View.java:12943) at android.view.View.draw(View.java:15237) at android.support.v7.widget.RecyclerView.draw(RecyclerView.java:2440) at android.view.View.draw(View.java:15140) at android.view.ViewGroup.drawChild_Original(ViewGroup.java:3405) at android.view.ViewGroup_Delegate.drawChild(ViewGroup_Delegate.java:53) at android.view.ViewGroup.drawChild(ViewGroup.java:3405) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3198) at android.view.View.draw(View.java:15138) at android.view.ViewGroup.drawChild_Original(ViewGroup.java:3405) at android.view.ViewGroup_Delegate.drawChild(ViewGroup_Delegate.java:53) at android.view.ViewGroup.drawChild(ViewGroup.java:3405) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3198) at android.view.View.draw(View.java:15234) at android.view.View.draw(View.java:15140) at android.view.ViewGroup.drawChild_Original(ViewGroup.java:3405) at android.view.ViewGroup_Delegate.drawChild(ViewGroup_Delegate.java:53) at android.view.ViewGroup.drawChild(ViewGroup.java:3405) at android.support.v4.widget.DrawerLayout.drawChild(DrawerLayout.java:1086) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3198) at android.view.View.draw(View.java:15138) at android.view.ViewGroup.drawChild_Original(ViewGroup.java:3405) at […]

RecyclerView:如何清除缓存/回收的视图?

我使用RecyclerView显示具有列表布局的项目列表。 我从列表布局切换到网格布局,在网格布局中仅显示所有数据的子集。 此开关使用与列表布局呈现时不同的布局XML。 所有这一切都很好,除了当我滚动,回收(缓存?)列表布局视图填充网格,与适当的网格布局视图项混合。 换句话说,我不是在layout_grid.xml为每个项目的布局使用我的layout_grid.xml ,而是使用layout_grid.xml布局获取项目,但是采用网格格式。 这告诉我LayoutManager工作正常,从列表切换到网格布局。 但并非所有项目视图项都使用网格xml布局重新创建,而是使用回收列表布局视图。 我试过RecyclerView.removeAllViews() , RecyclerView.removeAllViewInLayout() , RecyclerView.swapAdapter() (强制适配器重新加载),都无济于事。 更新: 如果我在列表中向下滚动两个位置,然后从列表切换到网格,前两个位置不通过onCreateViewHolder(),而是直接到onBindViewHolder(),因此不会强制使用网格布局xml。 相反,前两个位置项目被回收(我认为)并以列表布局格式显示。

如何在向下滚动时扩展AppBarLayout到达RecyclerView的顶部

我正在开发一个Android应用程序,我在其中使用CoordinatorLayout , AppBarLayout和CollapsingToolbarLayout来使用高级折叠栏function。 我使用recyclerview来显示片段中的项目数。 当我向上滚动recyclerview时,它会平滑地折叠AppBarLayout ,但当我向下滚动并到达AppBarLayout的第一项时,它会自动停止滚动而不会扩展`AppBarLayout’。 然后我再次向下滚动以使AppBarLayout可见。 所以我的要求是当我到达recyclerview的顶部时向下滚动它必须扩展`AppBarLayout’。 我们应该怎么做。 任何想法 ? 请查看相同https://www.dropbox.com/s/va5jk27ikytk​​5ax/app_collapsebar_issue.mp4?dl=0的video 这是我的布局: – <!– –> <!—-> <!– <!—-> <!—->

RecyclerView.onBindViewHolder只调用一次

经过几个小时的研究,我终于咨询了官方的帮助。 我有一个完美的RecyclerView.Adapter和RecyclerView.ViewHolders。 但由于某些原因我不明白,RecyclerView.Adapter.onBindViewHolder没有被正确调用。 private class AttendeeAdapter extends RecyclerView.Adapter { /*FIELDS*/ private List mAttendeeList; /*CONSTRUCTORS*/ public AttendeeAdapter(List attendees) { mAttendeeList = attendees; //Log.i(TAG, “AttendeeAdapter size: ” + getItemCount()); } 根据Log消息(项目计数作为预期列表的大小),我假设AttendeeAdapter已正确实例化。 所以我希望onBindViewHolder(VH,int)方法的调用次数与List的大小相同,但事实并非如此。 该方法仅被称为ONCE! /*METHODS*/ @Override public AttendeeHolder onCreateViewHolder(ViewGroup parent, int viewType) { LayoutInflater layoutInflater = LayoutInflater.from(getActivity()); View itemView = layoutInflater.inflate(R.layout.list_attendee, parent, false); return new AttendeeHolder(itemView); } @Override […]

是否可以将项目拖到RecyclerView之外?

当我将一个项目从另一个RecyclerView拖放到它上面时,我需要以某种方式通知RecyclerView 。 可能吗? 或者我应该使用经典的拖放框架 ? 带有蓝色项目的RecyclerView位于一个片段中,带有红色项目的RecyclerView位于另一个片段中。 我也尝试过使用ItemTouchHelper,但是在从RecyclerView外部移动项目时,不会调用ItemTouchHelper.Callback的onMove()方法。 private class CustomItemTouchCallback extends Callback { @Override public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { return makeMovementFlags(UP|DOWN|START|END, 0); } @Override public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { android.util.Log.d(TAG, “Move item from:” + viewHolder.getAdapterPosition() + ” to: ” + target.getAdapterPosition()); return true; } @Override public void onMoved(RecyclerView recyclerView, […]

exceptionjava.lang.NoClassDefFoundError:pim

我在崩溃报告中遇到了这个崩溃: Exception java.lang.NoClassDefFoundError: pim pil. (SourceFile:2) pij.onAnimationEnd (SourceFile:10) android.animation.AnimatorSet$AnimatorSetListener.onAnimationEnd (AnimatorSet.java:818) android.animation.ValueAnimator.endAnimation (ValueAnimator.java:1056) android.animation.ValueAnimator.access$400 (ValueAnimator.java:50) android.animation.ValueAnimator$AnimationHandler.doAnimationFrame (ValueAnimator.java:644) android.animation.ValueAnimator$AnimationHandler.run (ValueAnimator.java:660) android.view.Choreographer$CallbackRecord.run (Choreographer.java:761) android.view.Choreographer.doCallbacks (Choreographer.java:574) android.view.Choreographer.doFrame (Choreographer.java:543) android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:747) android.os.Handler.handleCallback (Handler.java:733) android.os.Handler.dispatchMessage (Handler.java:95) android.os.Looper.loop (Looper.java:136) android.app.ActivityThread.main (ActivityThread.java:5154) java.lang.reflect.Method.invokeNative (Method.java) java.lang.reflect.Method.invoke (Method.java:515) com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:732) com.android.internal.os.ZygoteInit.main (ZygoteInit.java:566) dalvik.system.NativeStart.main (NativeStart.java) 在我将recyclelView添加到我的布局和更多代码后,它开始发生但我怀疑它: com.testapp.MyRecyclerView android:layout_width=”wrap_content” android:layout_height=”wrap_content” android:id=”@+id/recycleViewImages” 这是我的自定义recyclerview,但即使使用常规的recyclerview(不是我的自定义),这个错误也会发生 这是我的customview的代码: public class MyRecyclerView extends […]

动态设置交错网格视图的固定高度

我正在尝试使用带有StaggeredGridLayout的RecyclerView ,并通过测量视图并动态设置高度使其成为固定高度。 我正在覆盖onMeasure() ,但它似乎并不总是正确测量。 我说它大约50%的时间都有效。 其他50%的时间用于衡量它。 我认为这与文本包装在view_tile_small.xml ,但我不确定。 分段 public class AtTheMuseumFragment extends Fragment implements SwipeRefreshLayout.OnRefreshListener{ //Odds n Ends Variables private MapFragment mapFragment; private FragmentTransaction fragmentTransaction; private User user = new User(); private MuseumCollection museumCollection; private Context context; //Story Grid Adapter Variables private AtTheMuseumAdapter nearMeAdapter; private TileFactory tileFactory; //Interfaces private OnFragmentChangeListener changeListener; @Bind(R.id.stories_list_view) RecyclerView storiesListView; […]