Articles of android recyclerview

一起滚动多个水平的RecyclerView

我创build了一个EPG视图,我在其中有一个LinearLayout封装的多个水平的RecyclerView (作为电视节目)。 当我滚动一个RecyclerView时,我希望剩下的视图一起滚动。 @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); layoutContent.setWeightSum(epg.getChannels().size()); //prepare recycler views and add into layoutContent based on epg channels for(EPG.Channel ch : epg.getChannels()){ AppLog.error(TAG, "Creating RecyclerView for: " + ch.getDisplayName()); //create new recycler view final RecyclerView rv = new RecyclerView(layoutContent.getContext()); lstRecyclerViews.add(rv); //set layout manager rv.setLayoutManager(new LinearLayoutManager(layoutContent.getContext(), LinearLayoutManager.HORIZONTAL, false)); //create adapter rv.setAdapter(new MyAdapter(ch.getPrograms())); […]

scrollBy在嵌套的recyclerview中无法正常工作

我有一个垂直滚动RecyclerView水平滚动内部RecyclerViews就像这样。 通过这个实现,用户可以同步滚动每个水平的回收站。 但是,当用户垂直滚动到父回收站视图时,刚刚附加在窗口上的新水平回收站不会显示在同一个滚动x位置上。 这个是正常的。 因为它刚刚创build。 所以,我试图在显示之前滚动到滚动的位置。 像这样: 注意 :这是父级回收站的方向是垂直的适配器。 @Override public void onViewAttachedToWindow(RecyclerView.ViewHolder holder) { super.onViewAttachedToWindow(holder); CellColumnViewHolder viewHolder = (CellColumnViewHolder) holder; if (m_nXPosition != 0) { // this doesn't work properly viewHolder.m_jRecyclerView.scrollBy(m_nXPosition, 0); } } 正如你所看到的, scrollBy不会影响第10行 , 第11行 , 第12 行和第13行。之后,我debugging了代码,以便能够找出发生了什么事情。 当我使用scrollBy设置滚动位置时,childCount()对于第10 行 , 第11 行 , 第12 行和第13 行返回零,因此它们不滚动。 但为什么 ? 为什么其他人工作? 我怎样才能解决这个问题 […]

SQLite数据到一个RecyclerView

该应用程序在SQLite数据库中有数据。 UI主要是一个RecyclerView。 问题是如何最好地将数据从数据库传输到UI,同时保持主线程? 我原本计划使用CursorLoader,ContentProvider和RecyclerView。 但是阅读它看起来像RecyclerView没有对Cursor提供的数据的开箱即用的支持。 荡。 然后,我留下了几个其他的select… AsyncTask加载数据,将其放入模型对象,并传递到RecyclerView适配器。 除了丑陋之外,它不是configuration更改友好的。 一个自定义的Loader,它从SQL加载数据并将其推入模型对象。 使用Cursor加载器,当它返回Cursor迭代通过它将数据推送到模型对象。 我怀疑这会发生在主线上,可能会损害性能。 使用Otto发送请求消息以请求数据,然后通过返回消息返回模型对象集合。 可能有〜500件东西,所以我觉得我可能会更喜欢奥托这样做。 如果我使用的是模型对象而不是Cursor的集合,我看不到ContentProvider的好处,而且我也失去了UI自动刷新数据更改(这可能是有用的)的能力。 这些选项都没有吸引力,有没有更好的办法? 该应用程序是在时间压力,所以无论是需要相当快实施。 不幸的是,UI需要水平滚动,只针对棒棒糖,所以RecyclerView似乎比ListView更好。

RecyclerView的子项中的WebViews中的数据可以预加载吗?

我有一个使用LinearLayoutManager的RecyclerView,其中每个子卡都包含一个WebView。 我使用loadData()方法将数据加载到WebView中。 当我向下滚动列表时,情况正常,但是当我向下滚动到足以使上述视图得到回收时,当我向后滚动时会出现问题。 当RecyclerView重新连接上面的子节点时,它会重新加载WebView中的数据,但直到WebView出现在屏幕上时才会重新加载数据。 当WebView加载它的数据时,它会将其下面的所有孩子推下屏幕。 因此,当我向上滚动时,WebView底部缓慢地出现在屏幕上,而不是整个WebView跳到WebView顶部的屏幕上。 这是非常刺耳的,不光滑的。 有没有办法告诉适配器或布局pipe理器提前加载WebViews? 如果RecyclerView能够顺利滚动,我会对自己的应用程序感到满意,但是现在,当我向后滚动时,它几乎不可用。

Android:需要更新从微调框中select的项目更新回收视图的build议

我是新来的回收视图。 我的要求如下: – 我必须调用一个Web服务,将提供两个数组。 一个与我需要显示在列表中的数据。 为此,我正在使用RecyclerView 。 另一个arrays是状态,我在微调中显示。 这个Web服务是分页的。 我已经添加了分页,它工作正常。 – 当用户从微调框中select一些其他元素时,我必须再次进行Web服务调用,并且回收者视图数据应该改变。 目前,在分页的情况下,我从下面的页面获取更多的数据: mAccountListingsAdapter.notifyItemRangeInserted(mAccountListingsAdapter.getItemCount(), mListings.size() – 1); 而且,当我改变微调的数据时,我正在做以下工作: mListings.clear();//Clear the data set mAccountListingsAdapter.notifyDataSetChanged();//Call notify data set changed on recycler view adapter getAccountListings();//Fetch new data from the web service and display in recycler view 但是,build议不要直接在回收视图适配器上调用notifyDataSetChanged(),而应该调用特定的notifyXXX方法,以避免性能和animation问题。 所以,我怀疑,如果我正确地通知旋转工具的onItemSelected()的回收视图适配器,或者应该改变它。 PS我试着在onItemSelected下面: int size = mListings.size(); mListings.clear(); mAccountListingsAdapter.notifyItemRangeRemoved(0, size – 1); […]

在回收视图中的每个项目的视差效果?

我试图玩Parallax和得到一些奇怪的错误,想知道如果有人可以添加一些input。 我见过的唯一有效实现视差的应用程序是soundcloud。 这是非常微妙的,但每个项目都有一个图像的背景,并有滚动时的视差效果。 我已经创build了一个自定义RecyclerView来处理这个,这是我到目前为止: public class ParallaxScrollListener extends RecyclerView.OnScrollListener { private float scrollSpeed = 0.5f; @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager(); int firstVisible = layoutManager.findFirstVisibleItemPosition(); int visibleCount = Math.abs(firstVisible – layoutManager.findLastVisibleItemPosition()); Matrix imageMatrix; float tempSpeed = -100; if (dy > 0) { tempSpeed […]

Systrace里面的VerifyClass是什么意思?

我正在看我的应用程序生成的systrace ,我已经确定了一个太长的框架。 这是由于充气我的项目视图时RecyclerView的onCreateViewHolder造成的。 项目视图与ConstraintLayout一样平坦。 但是下面的systrace报告有很多VerifyClass块,每块需要VerifyClass 。 那VerifyClass块是什么意思?

RecyclerView滚动条在第一项之后跳回到顶部

我创build了一个非常基本的RecyclerView示例。 布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MyActivity"> <android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="vertical"/> </RelativeLayout> 活动: public class MyActivity extends Activity { RecyclerView mRecyclerView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); mRecyclerView = (RecyclerView) findViewById(R.id.recyclerView); mRecyclerView.setAdapter(new TestAdapter()); mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); } public static class TestAdapter extends RecyclerView.Adapter<TestAdapter.ViewHolder> { @Override public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) […]

如何更改onClick的RecyclerView项目的viewType

我创build了一个以卡片为主要视图types的RecyclerView。 我试图实现的是,当用户点击一个项目,该项目的ViewType从卡片更改为另一个Viewtype(例如列表文字浏览放置水平滚动)。 我的代码为RecyclerView适配器如下: 在下面的一段代码中,我创build了一个枚举types的列表来跟踪recyclerview中每行的点击状态,然后我得到了我的数据集的大小,并用SHOW_PRIMARY_CONTENT为每一行初始化了我的数组列表 public class DisplayItemsAdapter extends RecyclerView.Adapter<DisplayItemsAdapter.ViewHolder> { private static ArrayList<clickedState> itemClickedState; private enum clickedState { SHOW_PRIMARY_CONTENT, SHOW_SECONDARY_CONTENT } private ArrayList<ItemData> mDataset = new ArrayList<>(); public DisplayItemsAdapter(ArrayList<ItemData> dataset) { mDataset = dataset; itemClickedState = new ArrayList<>(); for (int i = 0; i < mDataset.size(); i++) { itemClickedState.add(i, clickedState.SHOW_PRIMARY_CONTENT); } } 下面是我的ViewHolder类,它持有对我所有的子视图的引用,它实现了View.OnClickListener。 为什么它实现了View.OnClickListener,以便它可以在点击状态之间切换以相应地改变viewType。 public […]

与RecyclerView一起使用时出现毕加索图像错位问题

在我的应用程序中,我正在显示从web服务获取的文章。 那些文章有标题,形象和其他领域。 为了显示图像,我使用毕加索 。 问题 – 在滚动RecyclerView的同时,我看到图像错位。 有些项目有重复的图像。 我知道这是recyclerview重用xml项目布局,因为这是创build一个问题。 但是我认为这个问题一定有一些解决办法。 我google了这个,发现了一些post在stackoverflow,但没有帮助。 例如- 毕加索将图片加载到列表适配器中的错误图像视图中 我试过以下,但有同样的问题 – public class ArticleAdapter extends RecyclerView.Adapter<ArticleAdapter.ArticleViewHolder> { protected Activity mActivity; protected List<Article> mItems = new ArrayList<>(); private static OnEntityClickCallback mCallback; public ArticleAdapter(Activity pActivity) { mActivity = pActivity; } public void setItemClickCallback(OnEntityClickCallback pCallback) { this.mCallback = pCallback; } @Override public ArticleViewHolder onCreateViewHolder(ViewGroup […]