Articles of android recyclerview

RecyclerView ItemTouchHelper操作拖动结束

当他停止拖放我的RecyclerView(当他放弃select的项目时),我需要听用户。 我可以通过我的ItemTouchHelper获取这些信息吗? 感谢您的帮助 马克:目前我只有现在当用户仍然移动项目:) @Override public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder source, RecyclerView.ViewHolder target) { if (source.getItemViewType() != target.getItemViewType()) { return false; } // Notify the adapter of the move mAdapter.onItemMove(source.getAdapterPosition(), target.getAdapterPosition()); return true; }

NestedScrollViewLayout里面的SwipeRefreshLayout里面的RecyclerView不能滚动

我有一个活动与折叠工具栏和嵌套滚动视图与一个FrameLayout ,我把碎片放在里面。 最初,我把它放在一个CardView的FragmentA 。 很好用。 当我点击一个button,虽然我用另一个包含RecyclerViewreplaceFragmentB 。 当我添加FragmentB我不能滚动到列表的底部。 这个video显示了这个问题: LINK TO VIDEO 主机活动布局: <android.support.design.widget.AppBarLayout android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="340dp" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" android:fitsSystemWindows="true"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_scrollFlags="scroll|exitUntilCollapsed|enterAlwaysCollapsed" android:fitsSystemWindows="true" app:contentScrim="?attr/colorPrimary" app:expandedTitleMarginStart="48dp" app:expandedTitleMarginEnd="64dp"> ……… …… </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v4.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="fill_vertical" android:fillViewport="true" app:layout_behavior="@string/appbar_scrolling_view_behavior" > <!– the layout which will be the content of the activity (which will be hosted inside […]

在主题级别的RecyclerView造型

我试图在主题级别实现RecyclerViewgenerics样式参数。 和ListView ,我用了这样的东西: 定义一种风格: <style name="StyleListView" parent="Widget.AppCompat.ListView"> <item name="android:requiresFadingEdge">vertical</item> <item name="android:fadingEdgeLength">10dp</item> <item name="android:scrollbars">vertical</item> </style> 后来在我的自定义主题中使用: <item name="android:listViewStyle">@style/StyleListView</item> 这对ListView工作得很好。 然而,我无法反映这个RecyclerView因为我认为它适用于任何types的列表。 那么,是否有任何预定义的风格属性可用于RecyclerView ,例如android:recyclerViewStyle或任何东西? 如果不是,那么我怎样才能达到这个主题?

GridLayoutManager – 列宽包装自己的最大的孩子

我在HorizontalScrollView里面有一个RecyclerView ,我希望它使用一个GridLayoutManager 。 这是好的,但有一件事仍然困扰着我,每列的宽度是相同的(根据我认为最大的单元格宽度?)。 是否有可能包装的列的宽度匹配此特定列的最大单元格? 它应该看起来像这样: 橙色部分是电池片所采取的部分。 编辑 我们要求我澄清我的期望。 一个例子比单词好,在这里你可以看到一个带有GridLayoutManager的RecyclerView截图。 每个项目都是一个简单的TextView,包含10到40个字符之间的随机文本。 RecyclerView位于前面所述的Horizo​​ntalScrollView内部。 我们可以看到每个列都有相同的宽度,尽pipe这个列中没有项目可以满足整个宽度。 我想要的是去除那些无用的空白空间,并且有不同大小的列,每列都与自己最大的孩子的宽度相匹配。 如果你想testing这种行为,你可以克隆我上传到Github的回购: https : //github.com/ShargotthDev/TestGrid 如问,这是我的XML布局(非常基本): <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <HorizontalScrollView android:id="@+id/gameplay_hotizontalScroll_ScrollView" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="70dp"> <android.support.v7.widget.RecyclerView android:layout_width="wrap_content" android:layout_height="match_parent" android:id="@+id/recycler_view" /> </HorizontalScrollView> </RelativeLayout> 编辑2 我应该提到,一些单元格的span大小可能大于1,LayoutManager应该是垂直的,这样这些单元格会在水平方向而不是垂直方向占据更多的位置(不知道自己是否可以理解)。 谢谢你的时间 !

如何在recyclerview viewholder中处理很多不同的视图types

如果我有50种观点呢? 我的适配器中应该有50个静态内部类吗? 根据这个答案 ,是的。 我的第一个想法是把每个视图的内部类转换成一个单独的公共类,但是它们必须是静态的。 那么把每个封装成一个公共类,使内部类是静态的? 有没有更好的select? 编辑:代码示例:所以这将是一个很好的解决scheme? 这不也杀死性能? public class MainViewHolder extends DragSortAdapter.ViewHolder implements View.OnClickListener, View.OnLongClickListener { View container; TextView title; //called in onCreateViewHolder in adapter public MainViewHolder(DragSortAdapter adapter, View itemView) { super(adapter, itemView); container = itemView.findViewById(R.id.card_root); title = container.findViewById(R.id.text); } //called by onBindViewHolder in adapter public void setData(Data data) { title.setText(data.title); } } […]

方向改变后,Android反向共享元素转换?

对于共享元素转换,我正在关注这个 github项目。 它有2个屏幕 – 一个与recyclerview有卡数量和第二个细节屏幕。 正如预期的那样,它展现了imageview&textview从recyclerview项目到详细的屏幕和背面的逆向转换的元素转换。 但是,如果用户在细节屏幕上改变方向,然后按下返回button,则反转过渡animation不起作用。 在2:49到2:57之间查看这个video帧,即使在方向改变之后,似乎也是可能的。 任何想法呢? 编辑: 请查看此video以获得更好的理解。

如何在Android中使用RecyclerView的setItemChecked(position,true)?

我正在开发一个Material Design Navigation Drawer。 我创build了一个新的类RecyclerItemClickListener implements RecyclerView.OnItemTouchListener在其中RecyclerItemClickListener implements RecyclerView.OnItemTouchListener来处理用户对列表项的点击。 我在MainActivity类的onCreate方法中使用这种方法: mRecyclerView.addOnItemTouchListener( new RecyclerItemClickListener(this, mRecyclerView, new RecyclerItemClickListener.OnItemClickListener() { @Override public void onItemClick(View view, int position) {// do whatever if(position!=0){ setItemChecked(position, true); setSelectable(true); boolean isSelected = view.isSelected(); view.setActivated(isSelected); selectItem(position); } } @Override public void onItemLongClick(View view, int position){ // … } }) ); 我从这个博客文章的基础代码: RecyclerView第二部分,但它没有完成工作,对我来说,我怎么能得到它的工作并不清楚。 我也检查了这个看似简单的解决scheme: Innodroid […]

用RecyclerView自定义警报对话框

我正在使用RecyclerView列出一些文本,现在我想这样做,当用户点击文本时popup一个自定义的警报对话框。 我已经试过这个到目前为止,但得到一个NullPointerException; 这里有什么可能是错的? public class CBAdapter extends RecyclerView.Adapter<CBAdapter.ViewHolder> { List<AdapterData> mItems; public CBAdapter() { super(); mItems = new ArrayList<>(); AdapterData data = new AdapterData(); data.setTextOne("Many Bows"); mItems.add(data); data = new AdapterData(); data.setTextOne("Pardon"); mItems.add(data); data = new AdapterData(); data.setTextOne("Fall To Knees & Beg"); mItems.add(data); data = new AdapterData(); data.setTextOne("Backflips"); mItems.add(data); } @Override public ViewHolder onCreateViewHolder(ViewGroup viewGroup, […]

RecyclerView.ViewHolder总是必须是一个内部类吗?

我有两个RecyclerView.Adapter使用完全相同的RecyclerView.ViewHolder作为内部类。 我想摆脱代码重复,并使这些ViewHolder免费,单独的类,所以现在全新的类可以用于任何RecyclerView.Adapter s。 但是,我遇到了很多麻烦,例如访问适配器对象的困难。 getAdapterPosition()总是返回-1 。 所以我改变了主意,做了一个由这些适配器扩展的超级RecyclerView.Adapter类,并将ViewHolder放在超类中,以便这些适配器可以从子类中使用它。 但是我想知道ViewHolder是否必须是内部类。 这让我很烦恼。 请不要指教我结合适配器类,他们是完全不同的ViewHolder只是一个特殊的viewType可以出现在任何RecyclerView 我正在等待你的更好的方法,让我感觉更好。 问候。

RecyclerView中的共享元素转换

我试图在RecyclerView上使用共享元素转换,但它似乎不工作。 这是我使用makeSceneTransitionAnimation()适配器的一部分: public void onBindViewHolder(final BookViewHolder holder, final int position) { holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(context, DetailsActivity.class); ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation((Activity)context , holder.smallThumbnail, "thumbnailTransition"); context.startActivity(intent, optionsCompat.toBundle()); } } }