Articles of android recyclerview

不工作RecyclerView与中心select水平滚动查看Notifydatasetchange?

自动滚动是问题,也移动到一些特定的位置使用代码是困难的。 我正在使两个recyclerView依赖于水平滚动和中心select彼此。 所以我的问题是使用Notifydatasetchanged方法,并重新设置recyclerView位置为0,它的滚动select范围,因为它返回错误的索引… 当我想要更改数据后得到中心select索引。 我正在使用下面的例子来做一些编辑。 滚动时获取RecycleView的中心可见项 我需要将第一个recyclerView适配器的滚动数据更改为第二个数据更改的recyclerView适配器。 但是scrollview在第一个位置设置位置我试着notifyItemRangeChanged(int,int)notifyItemRangeInserted(int,int)方法… 详细信息说明:我正在更改types并重置Look滚动视图的值。 我需要改变底部滚动视图的选定位置。 特别是我不能通过更改数据来获得中心位置。 意思是如果我通知适配器比索引将保持原样。 重置数据后,我需要像正常的适配器那样工作。 提前致谢。 public void getRecyclerview_Type() { final RecyclerView recyclerView_Type = (RecyclerView) findViewById(R.id.recycleView); if (recyclerView_Type != null) { recyclerView_Type.postDelayed(new Runnable() { @Override public void run() { setTypeValue(); } }, 300); recyclerView_Type.postDelayed(new Runnable() { @Override public void run() { // recyclerView_Type.smoothScrollToPosition(Type_Adapter.getItemCount() – 1); setTypeValue(); } […]

Android – 如何在滚动时停止RecyclerView中的图像重新加载

我正在创build一个应用程序来从互联网加载图像卡。 我正在使用Recyclerview的上市目的。 对于下载图像,我已经尝试过毕加索,通用图像下载和其他自定义方法,但到处都有这个问题: 每当我向下滚动,在imageview中的图像正在重新加载。 我甚至保持一个条件,检查如果imageview包含图像,但也似乎不工作,或者我的代码可能有错误。 但我无法find解决这个问题的办法。 下面我附加了我的代码的“onBindViewHolder”函数,我认为这是有问题的部分。 这里的图像是一个包含图像URL的string数组列表。 public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.default_card, parent, false); ViewHolder viewHolder; viewHolder = new ViewHolder(view); return viewHolder; } @Override public void onBindViewHolder(ViewHolder holder, int position) { String url = images.get(position); if (holder.imgView.getDrawable() != null) { //Do Nothing } else { ImageLoader.getInstance().displayImage(url, holder.imgView); […]

如何recycleview适配器下另一个recycleview适配器?

我有一个RecyclerView 。 它有一个自定义的布局和自定义布局里面的是另一个RecyclerView 。 当我通知回收商视图,一个项目已被删除,我的主要回收视图更新,但我的自定义视图回收视图没有得到通知。 SwipeDismissRecyclerViewTouchListener listener = new SwipeDismissRecyclerViewTouchListener.Builder( recyclerView, new SwipeDismissRecyclerViewTouchListener.DismissCallbacks() { @Override public boolean canDismiss(int position) { return true; } @Override public void onDismiss(View view) { // Do what you want when dismiss int id = recyclerView.getChildAdapterPosition(view); databaseHelper.deleteSingleItem(cartAdapter.cartItemName.get(id)); Log.e(TAG, "onDismiss: " + subdata.get(id) + " " + data.get(id)); subdataprice.remove(id); subdata.remove(id); addonlist.remove(id); price.remove(id); […]

让Android RecyclerView更新React Native组件内的视图

我正在使用React Native制作移动应用程序,包含的列表组件没有足够高的性能,所以我开始使用Android的RecyclerView作为列表组件。 虽然有一个问题。 RecyclerView不更新其内容视图,直到我滚动或更改RecyclerView的大小。 什么可能导致这个问题,我该如何解决它? 我已经尝试notifyDatasetChanged,notifyItemChanged,forceLayout,invalidate,postInvalidate和许多不同的变化与每个。

在Android中如何处理recyclerView中的多个布局点击

在我们的应用程序中,我们有消息列表。 我们正在切换到RecyclerView 。 我们的信息可以来自文字,图像。 示例消息可以像这样。 处理点击使用这个类: public class RecyclerViewItemClickListener implement RecyclerView.OnItemTouchListener { public static interface OnItemClickListener { public void onItemClick(View view, int position); public void onItemLongClick(View view, int position); } private OnItemClickListener mListener; private GestureDetector mGestureDetector; public RecyclerViewItemClickListener(Context context, final RecyclerView recyclerView, OnItemClickListener listener) { mListener = listener; mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() { […]

在使用StaggeredGridLayoutManager时停止移动项目

我在android中使用staggredGridLayoutManager的recyclerview。 问题是,有时当滚动项目移动到适合在屏幕上。 通常没有什么可担心的,但在我的情况下,它把所有的东西都搞乱了! 那么是否有阻止这种行为呢? 不只是animation。 整个项目重新安排的东西。 谢谢

Android的selectableItemBackground长按没有发光效果

我正尝试在Android应用程序中使用RecyclerView。 我将RecyclerView示例项目导入到Android Studio中,并且工作正常。 我想让回收者视图中的物品在用户长时间按下时作出反应。 为了做到这一点,我把视图的背景设置为selectableItemBackground 。 我做了这些修改: 在text_row_item.xml里面,我在FrameLayout标签上添加了这一行: android:background="?android:attr/selectableItemBackground" 在CustomAdapter.java里面,我在FrameLayout上添加了一个长的监听器: v.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View view) { Log.d(TAG, "Element " + getPosition() + " long clicked."); return true; } }); 如果我在棒棒糖模拟器上运行修改后的样本,当我在回收站视图中长按项目时,会产生很好的连锁反应。 但是,如果我在KitKat模拟器上运行应用程序,我不会得到KitKat的发光效果。 当我长时间按下列表中的项目时会变暗,并且长按听众确实运行,但是我期望随着长按的发生,颜色也会发光。 下面是我所说的gif: 为什么selectableItemBackground不能在KitKat上运行发光效果? 我怎样才能使它在KitKat和棒棒糖上工作?

一起滚动多个水平的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更好。