Articles of android recyclerview

notifyDataSetChange无法在RecyclerView上工作

我正在使用Android的新RecyclerView,但每当我调用其中一个“notify”方法时,我都无法刷新我的自定义适配器。 我试过调用notifyDataSetChanged,notifyItemRangeInserted和notifyItemInserted,但它们似乎都没有工作。 这是我的自定义适配器的代码。 我基本上试图刷新一个字符串列表: package com.mycompany.myapp.adapters; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.TextView; import com.mycompany.myapp.R; import java.util.List; public class FeedAdapter extends RecyclerView.Adapter { private List mDataset; public FeedAdapter(List dataset) { super(); mDataset = dataset; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int i) { LinearLayout v = (LinearLayout) LayoutInflater.from(parent.getContext()) .inflate(R.layout.list_item_feed, parent, […]

在片段中显示RecyclerView

我在Android Lollipop中尝试新的RecyclerView而且我被卡住了。 我正在尝试接收一个列表,在图标的右侧有一个图标和一个TextView ,在Fragment 。 我find了关于如何设置RecyclerView 精彩教程 。 我已经遵循了每一点,只更改了item_layout.xml以满足我的需求。 该项目构建没有任何错误,但当它在我的设备上启动时,我收到此错误: java.lang.RuntimeException:无法启动活动ComponentInfo {com.fredrikaldgard.materialcolors / com.fredrikaldgard.materialcolors.MainActivity}:java.lang.NullPointerException:尝试调用虚方法’void android.support.v7.widget.RecyclerView。 setLayoutManager(android.support.v7.widget.RecyclerView $ LayoutManager)’对空对象引用 我试图谷歌问题,但我是Android开发的业余爱好者。 这是我的MainActivity : @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 1. get a reference to recyclerView RecyclerView recyclerView = (RecyclerView) findViewById(R.id.list); // 2. set layoutManger recyclerView.setLayoutManager(new LinearLayoutManager(this)); // this is data fro recycler view ItemData […]

嵌套的RecyclerView。 如何在子级RecyclerView滚动时阻止父级RecyclerView滚动?

我正在尝试实施水平recyclerview并且recyclerview每个项目都是具有网格布局的垂直recyclerview 。 我面临的问题是,当我尝试垂直滚动子recyclerview有时父recyclerview会滚动并开始水平滚动。 我尝试解决这个问题的方法是, 父recyclerview setNestedScrollingEnabled(false)上的setNestedScrollingEnabled(false) 在子onTouch()中,我通过调用requestdisallowinterceptTouchevent(false)禁用父requestdisallowinterceptTouchevent(false)上的触摸事件 上述解决方案都没有为问题提供完美的解决方案。 任何帮助表示赞赏

当RecyclerView适合屏幕时,不要折叠工具栏

我使用Android Design Library创建了一个应用程序,带有工具栏和TabLayout。 实际上有2个选项卡,都有2个RecyclerView,滚动时会自动折叠工具栏。 我的问题是:当RecyclerView具有少量项目并且完全适合屏幕时(如在TAB 2中),我可以禁用工具栏折叠吗? 我见过很多像CheeseSquare这样的例子,由Google员工制作,问题仍然存在:即使RecyclerView只有1个项目,工具栏也会隐藏在滚动上。 我想我可以找出是否在屏幕上显示RecyclerView的第一项,如果是,则禁用工具栏折叠。 前者易于实现,后者又如何呢? 这是我的布局:

android.support.v7.app.AlertController.RecycleListView和android.support.v7.widget.RecyclerView之间的区别

我最近更新了我的Android Studio和SDK。 在新的Android Studio中,有android.support.v7.app.AlertController.RecycleListView 。 我熟悉android.support.v7.RecyclerView ,所以我有点困惑,这两者之间有什么区别。 如果有人可以指导,那将是感恩的。

在Android的RecyclerView中检测animation完成

与ListView不同, RecyclerView没有一种简单的方法来设置空视图,因此必须手动管理它,以便在适配器的项数为0时使空视图可见。 实现这一点,起初我尝试在修改底层结构(在我的情况下为ArrayList )后立即调用空视图逻辑,例如: btnRemoveFirst.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { devices.remove(0); // remove item from ArrayList adapter.notifyItemRemoved(0); // notify RecyclerView’s adapter updateEmptyView(); } }); 它做了这件事,但有一个缺点:当删除最后一个元素时,在删除animation完成之前立即显示空视图。 所以我决定等到animation结束然后更新UI。 令我惊讶的是,我找不到在RecyclerView中监听animation事件的好方法。 首先想到的是使用isRunning方法,如下所示: btnRemoveFirst.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { devices.remove(0); // remove item from ArrayList adapter.notifyItemRemoved(0); // notify RecyclerView’s adapter recyclerView.getItemAnimator().isRunning(new RecyclerView.ItemAnimator.ItemAnimatorFinishedListener() { @Override […]

仅在getItemViewType更改时才调用RecyclerView onBindViewHolder

我有一个具有多个视图types的视图。 滚动onBindViewHolder仅在getItemViewType更改值时getItemViewType 。 这会导致我的列表项无法正确更新。 这是一个错误吗? 或者我在这里做错了什么。 这似乎是来自新的recyclerView类的非常奇怪的行为。 这是我的适配器: package se.davison.smartrecycleradapter; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.util.SparseIntArray; import android.view.LayoutInflater; import android.view.ViewGroup; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; /** * Created by richard on 10/11/14. */ public class SectionAdapter extends RecyclerView.Adapter { private static final String TAG = SectionAdapter.class.getSimpleName(); private final LayoutInflater inflater; […]

检测RecyclerView何时在滚动时到达最底部位置

我有一个RecyclerView的代码。 recyclerView = (RecyclerView)rootview.findViewById(R.id.fabric_recyclerView); recyclerView.setLayoutManager(layoutManager); recyclerView.addItemDecoration(new RV_Item_Spacing(5)); FabricAdapter fabricAdapter=new FabricAdapter(ViewAdsCollection.getFabricAdsDetailsAsArray()); recyclerView.setAdapter(fabricAdapter); 我需要知道RecyclerView在滚动时何时到达最底部位置。 可能吗 ? 如果有,怎么样?

使用ItemTouchHelper进行滑动以解除与刷出后面显示的另一个视图

我有一个RecyclerView,并希望允许我的用户使用滑动手势从列表中删除项目。 但正如其他应用程序(例如Gmail)所知,我想在其后面显示一个删除图标,以便我的用户知道刷卡会导致删除。 但是,我找不到一个明显的方法来做到这一点。 ItemTouchHelper使用viewHolder.itemView,因此需要整行。 我的代码: ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT) { @Override public boolean onMove( final RecyclerView recyclerView, final RecyclerView.ViewHolder viewHolder, final RecyclerView.ViewHolder target) { return false; } @Override public void onSwiped( final RecyclerView.ViewHolder viewHolder, final int swipeDir) { adapter.remove(viewHolder.getAdapterPosition()); } }; ItemTouchHelper itemTouchHelper = new ItemTouchHelper( simpleItemTouchCallback ); itemTouchHelper.attachToRecyclerView(itemsRecyclerView); itemsRecyclerView.setLayoutManager( new LinearLayoutManager(getContext()) ); […]

与ListView相比,RecyclerView的优势是什么?

我刚刚开始使用RecyclerView,我发现它缺少很多function,如页眉,页脚,分隔符,列表选择器,现在我对使用它而不是ListView有了第二个想法。 与ListView相比,RecyclerView有哪些优缺点? 它可以处理比ListView更复杂的视图吗? 到目前为止我一直在使用ListView,有几次,是时候切换到RecyclerView还是现在太快了?