Tag: android recyclerview

如何在回收站视图适配器中获取上下文

我试图使用picasso库能够加载url到imageView,但我无法获得context正确使用picasso库。 public class FeedAdapter extends RecyclerView.Adapter<FeedAdapter.ViewHolder> { private List<Post> mDataset; // Provide a reference to the views for each data item // Complex data items may need more than one view per item, and // you provide access to all the views for a data item in a view holder public class ViewHolder extends RecyclerView.ViewHolder […]

如何知道一个RecyclerView / LinearLayoutManager是滚动到顶部还是底部?

目前我正在使用下面的代码来检查是否应该启用SwipeRefreshLayout。 private void laySwipeToggle() { if (mRecyclerView.getChildCount() == 0 || mRecyclerView.getChildAt(0).getTop() == 0) { mLaySwipe.setEnabled(true); } else { mLaySwipe.setEnabled(false); } } 但是这是问题。 当它滚动到另一个项目的视图的边界mRecyclerView.getChildAt(0).getTop()也返回0。 有没有像RecyclerView.isScrolledToBottom()或RecyclerView.isScrolledToTop() ? 编辑: (mRecyclerView.getChildAt(0).getTop() == 0 && linearLayoutManager.findFirstVisibleItemPosition() == 0) RecyclerView.isScrolledToTop()种类,但RecyclerView.isScrolledToBottom()呢?

RecyclerView崩溃时,“报废或附加的意见可能无法回收”

我正在使用StaggeredGridLayoutManager从Android网站采取一个简单的RecyclerView实现,我不断收到这个崩溃我的应用程序的错误: java.lang.IllegalArgumentException: Scrapped or attached views may not be recycled. isScrap:false isAttached:true at android.support.v7.widget.RecyclerView$Recycler.recycleViewHolderInternal(RecyclerView.java:3501) at android.support.v7.widget.RecyclerView$LayoutManager.scrapOrRecycleView(RecyclerView.java:5355) at android.support.v7.widget.RecyclerView$LayoutManager.detachAndScrapAttachedViews(RecyclerView.java:5340) at android.support.v7.widget.StaggeredGridLayoutManager.onLayoutChildren(StaggeredGridLayoutManager.java:572) at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:1918) at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:2155) at android.view.View.layout(View.java:14008) at android.view.ViewGroup.layout(ViewGroup.java:4373) at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1021) at android.view.View.layout(View.java:14008) at android.view.ViewGroup.layout(ViewGroup.java:4373) at android.widget.FrameLayout.onLayout(FrameLayout.java:448) at android.view.View.layout(View.java:14008) at android.view.ViewGroup.layout(ViewGroup.java:4373) at android.widget.FrameLayout.onLayout(FrameLayout.java:448) at android.view.View.layout(View.java:14008) at android.view.ViewGroup.layout(ViewGroup.java:4373) at android.support.v7.internal.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:502) at android.view.View.layout(View.java:14008) at android.view.ViewGroup.layout(ViewGroup.java:4373) at android.widget.FrameLayout.onLayout(FrameLayout.java:448) at […]

RecyclerView.ViewHolder – getLayoutPosition vs getAdapterPosition

由于新的支持库版本(22.x)RecyclerView.ViewHolder类的getPosition()方法已被弃用,而不是主题中提到的方法。 我没有真正从阅读文档中获得改变。 请问有人能解释一下外行的差别吗? 我有以下用例 – 我给我的适配器一个列表,也希望能够关联每个列表项的额外信息。 我有一个位置到额外的映射,这个映射对于持有者是可用的,这样他们可以为他们的位置获取额外的东西,并用它做东西。 在持有人中,我应该使用哪种方法? 索引0和1处的列表项在切换位置时,​​持有者位置会发生什么情况? 这些方法返回什么?

有没有什么办法在代码中启用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。 谢谢!

notifyDatasetChanged()后,RecyclerView闪烁

我有一个RecyclerView从API加载一些数据,包括一个图像的URL和一些数据,我使用networkImageView来延迟加载图像。 @Override public void onResponse(List<Item> response) { mItems.clear(); for (Item item : response) { mItems.add(item); } mAdapter.notifyDataSetChanged(); mSwipeRefreshLayout.setRefreshing(false); } 这是适配器的实现: public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, final int position) { if (isHeader(position)) { return; } // – get element from your dataset at this position // – replace the contents of the view with that element MyViewHolder […]

了解RecyclerView setHasFixedSize

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

使用RecyclerView和CardView触摸反馈

我很想为我的开源库启用触摸反馈。 我创build了一个RecyclerView和一个CardView 。 CardView包含具有不同onClick操作的不同区域。 现在,如果用户点击卡片中的任意位置,我很乐意触发Ripple效果,但是我无法实现此行为。 这是我的listitem,你也可以在GitHub上find它: https : //github.com/mikepenz/AboutLibraries/blob/master/library/src/main/res/layout/listitem_opensource.xml <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="true" android:background="@drawable/button_rect_normal"/> <LinearLayout android:padding="6dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <LinearLayout android:gravity="center_vertical" android:paddingLeft="8dp" android:paddingRight="8dp" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/libraryName" android:textColor="@color/title_openSource" android:textSize="@dimen/textSizeLarge_openSource" android:textStyle="normal" android:layout_width="0dp" android:layout_weight="5" android:layout_height="wrap_content" android:ellipsize="end" android:maxLines="1"/> <TextView android:id="@+id/libraryCreator" android:textColor="@color/text_openSource" android:textStyle="normal" android:layout_width="0dp" android:layout_weight="2" android:layout_height="wrap_content" android:layout_marginTop="2dp" android:gravity="right" android:maxLines="2" android:textSize="@dimen/textSizeSmall_openSource"/> </LinearLayout> <View android:layout_width="match_parent" android:layout_height="1px" android:layout_marginTop="4dp" android:background="@color/dividerLight_openSource"/> <TextView android:id="@+id/libraryDescription" […]

RecyclerView不会调用onCreateViewHolder

我的RecyclerView不要调用onCreateViewHolder , onBindViewHolder甚至是MenuViewHolder构造函数,因此在RecyclerView中不会出现任何东西。 我把日志进行debugging,并没有显示日志。 可以是什么? 我的适配器: public class MenuAdapter extends RecyclerView.Adapter<MenuAdapter.MenuViewHolder> { private LayoutInflater inflater; List<Menu> data = Collections.emptyList(); public MenuAdapter(Context context, List<Menu> data) { Log.i("DEBUG", "Construtor"); inflater = LayoutInflater.from(context); Log.i("DEBUG MENU – CONSTRUTOR", inflater.toString()); this.data = data; for(Menu menu: this.data){ Log.i("DEBUG MENU – CONSTRUTOR", menu.menu); } } @Override public MenuViewHolder onCreateViewHolder(ViewGroup parent, int viewType) […]

什么是SortedList <T>与RecyclerView.Adapter一起工作?

Android支持库22.1昨天发布。 v4支持库和v7中增加了许多新function,其中android.support.v7.util.SortedList<T>引起了我的注意。 据说SortedList是一个新的数据结构,与RecyclerView.Adapter ,维护RecyclerView.Adapter的项目添加/删除/移动/更改的animation。 这听起来像ListView的List<T> ,但似乎更先进和强大。 那么, SortedList<T>和List<T>什么区别呢? 我怎么能有效地使用它? 如果是这样,那么SortedList<T>在List<T>上的执行是什么? 有人可以张贴一些样本吗? 任何提示或代码将不胜感激。 提前致谢。