标签: android-recyclerview

如何控制recyclerView.smoothScrollToPosition(位置)的滚动速度

我有一个回收者视图...我想要一个平滑的滚动,然后以编程方式滚动到它以向用户显示其中的完整内容....并且我能够通过以下方式执行此操作

    final int height=recyclerView.getChildAt(0).getHeight();
    recyclerView.smoothScrollToPosition(height);
    recyclerView.postDelayed(new Runnable() {
        public void run() {
            recyclerView.smoothScrollToPosition(0);
                        }
    },200);
Run Code Online (Sandbox Code Playgroud)

但我想要的是......减慢滚动速度,使整个内容清晰可见.所以,有人可以帮助我找到它.Thxs ...

android android-recyclerview

47
推荐指数
6
解决办法
3万
查看次数

需要一个关于RecyclerView.Adapter.notifyItemChanged(int position,Object payload)的示例

根据RecyclerView有关medthod notifyItemChanged(int position,Object payload)的文档

通知可能的有效载荷对象,通知任何已注册的观察者,该位置的项目已更改.

我不明白如何payload在这种方法中使用第二个参数.我搜索过很多关于"有效载荷"的文件但是一切都很模糊.

所以,如果你知道这个方法,请给我一个明确的例子.非常感谢你.

android payload android-recyclerview

47
推荐指数
3
解决办法
4万
查看次数

Jetpack Compose:嵌套 LazyColumn / LazyRow

我读过类似的主题,但找不到满意的结果:

我的用例是:创建一个评论列表(数百个项目),并可以显示对每个评论的回复(每个项目数百个项目)。

目前不可能LazyColumn在另一个内部进行嵌套LazyColumn,因为 Compose 会抛出异常:

java.lang.IllegalStateException:垂直可滚动组件是用无限最大高度约束测量的,这是不允许的。常见原因之一是嵌套布局,例如 LazyColumn 和 Column(Modifier.verticalScroll())。如果您想在项目列表之前添加标题,请在 LazyColumn 范围内的主 items() 之前添加一个标题作为单独的 item() 。发生这种情况可能还有其他原因:您的 ComposeView 被添加到具有一定权重的 LinearLayout 中、您应用了 Modifier.wrapContentSize(unbounded = true) 或编写了自定义布局。请尝试消除滚动容器上方层次结构中无限约束的来源。

上面的链接(以及我想到的其他链接)提供的解决方案是:

  • 对内部使用固定高度LazyColumn- 我无法使用它,因为每个项目可以有不同的高度(例如:单行注释与多行注释)。
  • 在内部使用普通Columns (不是惰性)LazyColumn- 性能方面它不如惰性,当使用 Android Studio 的 Profiler 和 500 个元素的列表时,正常Column会在我的应用程序中使用 350MB 的 RAM,而使用惰性 则需要 220-240MB Composables。因此它无法正常回收。
  • 使用FlowColumn伴奏者 - 我没有看到这个和正常之间有任何性能差异,Column所以请参见上面。
  • 展平列表的数据源(将评论和回复显示为“主要”评论,并且仅进行 …

android kotlin android-recyclerview android-jetpack-compose android-jetpack-compose-list

47
推荐指数
2
解决办法
2万
查看次数

如何集中回收者视图的项目?

我需要将每行中的元素居中,这样它们就像在这个模型中一样.我一直在寻找是否有任何布局以这种方式工作而不看.项目以行为中心.

小样

这就是我现在在代码中看起来的样子.在此输入图像描述

android android-layout android-recyclerview

46
推荐指数
5
解决办法
7万
查看次数

如何使用Espresso计算RecyclerView项目

使用Espresso和Hamcrest,

如何计算recyclerView中可用的项目编号?

例子:我想检查特定的RecyclerView中是否显示了5个项目(必要时滚动).

android hamcrest android-espresso android-recyclerview

46
推荐指数
7
解决办法
2万
查看次数

回收商视图Android中的商品之间的保证金

嗨,我正在按照本教程

http://www.journaldev.com/10024/android-recyclerview-and-cardview-example-tutorial

现在我面临一个奇怪的问题,回收者视图内的每个cardview项目之间的差距太大了.

问题

如何减少放置在回收站视图内的每个cardview项目之间的保证金.

在此输入图像描述

android android-cardview android-recyclerview

46
推荐指数
6
解决办法
9万
查看次数

如何使用垂直GridLayoutManager水平居中RecyclerView项目

我有垂直RecyclerView使用GridLayoutManager.我希望每列都居中,但列始于左侧.在下图中,您可以看到我在说什么.我用丑陋的配色方案来说明列和背景.绿色是每个项目的背景RecyclerView,红色是RecyclerView自身的背景:

http://imgur.com/a/J3HtF

我正在设置:

mRecyclerView.setLayoutManager(new GridLayoutManager(this, 2));
Run Code Online (Sandbox Code Playgroud)

这是column_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="120dp"
              android:layout_height="180dp"
              android:orientation="vertical"
              android:padding="4dp">

    <ImageView
        android:id="@+id/movie_column_photo"
        android:layout_width="80dp"
        android:layout_height="120dp"/>

    <TextView
        android:id="@+id/movie_column_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

这是recyclerview xml:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/company_details_recyclerview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scrollbars="vertical">
    </android.support.v7.widget.RecyclerView>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

android gridlayoutmanager android-recyclerview

46
推荐指数
1
解决办法
3万
查看次数

RecyclerView使用下面的视图滑动

我一直在做一些研究,我还没有找到一个示例或实现,允许您在刷卡时将视图(下面的示例图像)放在RecyclerView下面.有没有人有任何关于如何在使用库的情况下实现它的示例或想法.

这是我如何实现轻扫以解雇.

ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {

    @Override
    public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
        return false;
    }

    @Override
    public int getSwipeDirs(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
        return super.getSwipeDirs(recyclerView, viewHolder);
    }

    @Override
    public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
        if (viewHolder instanceof ViewDividers) {
            Log.e("DIRECTION", direction + "");
        }
    }
};
new ItemTouchHelper(simpleItemTouchCallback).attachToRecyclerView(recycler);
Run Code Online (Sandbox Code Playgroud)

以下是Google收件箱的示例: 在此输入图像描述

android android-recyclerview

45
推荐指数
3
解决办法
4万
查看次数

将支持库从"23.1.1"升级到"23.2.1"后,Recycler视图项填满整个回收站视图高度

以前,我使用以下旧的支持库"23.1.1".

compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:support-v4:23.1.1'
compile 'com.android.support:preference-v7:23.1.1'
compile 'com.android.support:preference-v14:23.1.1'
compile 'com.android.support:design:23.1.1'
compile 'com.android.support:recyclerview-v7:23.1.1'
Run Code Online (Sandbox Code Playgroud)

它工作得很好.这就是我的RecyclerView样子

在此输入图像描述

现在,由于修复了一些错误,我希望迁移到"23.2.1".

compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:support-v4:23.2.1'
compile 'com.android.support:preference-v7:23.2.1'
compile 'com.android.support:preference-v14:23.2.1'
compile 'com.android.support:design:23.2.1'
compile 'com.android.support:recyclerview-v7:23.2.1'
Run Code Online (Sandbox Code Playgroud)

然而,突然之间,我所有的RecyclerView物品,似乎都填满了RecyclerView整个高度.

在此输入图像描述

在此输入图像描述

这是我的布局文件的代码片段:https://gist.github.com/yccheok/241a0d38d56305a1be24d09b54eb1600

让我感到困惑的是,尽管我"wrap_content"在我的回收站视图项目布局中使用它,但它并没有按预期工作.

我没有使用任何自定义布局管理器RecyclerView.

http://developer.android.com/tools/support-library/index.html,我意识到23.2.1在RecyclerView这个时候做了很多改变.

  • 修复了与各种测量规范方法相关的错误.(问题201856)
  • RecyclerView在计算布局或滚动时减少了不允许适配器更改的锁定时间.(问题202046)
  • 修复了调用notifyItemChanged()不在视图中的项目时发生崩溃的问题.(问题202136)
  • 修复了RecyclerView.LayoutManager在同一测量过程中添加和删除视图时发生的崩溃.(问题193958)

我最怀疑的是https://code.google.com/p/android/issues/detail?id=201856,因为它涉及更改各种测量规范方法

到目前为止,我尝试使用一个简单的RecyclerView项目重现问题,使用23.2.1但是失败了!它没有"项目填满RecyclerView整个高度"的问题.我的猜测是,我的简单项目不能模拟生产项目的复杂布局结构.我的制作项目有以下布局

<Activity>
    <Fragment>
        <View Pager>
            <Fragment>
                <RecyclerView />
            </Fragment>
        </View Pager>
    </Fragment>
</Activity>
Run Code Online (Sandbox Code Playgroud)

经过几个小时的调试,我还是找不到这个问题的根本原因,有什么提示吗? …

android android-support-library android-recyclerview android-support-design

44
推荐指数
4
解决办法
3万
查看次数

无法从RecyclerView.OnScrollListener调用notifyItemInserted()

最近我升级recyclerview-v7:23到了recyclerview-v7:24.2.0.我的应用程序有一个无尽的滚动列表.notifyItemInserted当我将加载视图添加到RecyclerView(null对象表示加载,id 0为空,-1表示页面结束)时,错误消息指向该行,并且它之前工作正常(recyclerview-v7:23)但突然我得到错误像这样,不知怎的,我的加载出现两次,然后当它删除一个,有一个加载仍然可见在顶部.

    W/RecyclerView: Cannot call this method in a scroll callback. Scroll callbacks might be run during a measure & layout pass where you cannot change the RecyclerView data. Any method call that might change the structure of the RecyclerView or the adapter contents should be postponed to the next frame.java.lang.IllegalStateException:  
 at android.support.v7.widget.RecyclerView.assertNotInLayoutOrScroll(RecyclerView.java:2403)
     at android.support.v7.widget.RecyclerView$RecyclerViewDataObserver.onItemRangeInserted(RecyclerView.java:4631)
     at android.support.v7.widget.RecyclerView$AdapterDataObservable.notifyItemRangeInserted(RecyclerView.java:10469)
     at android.support.v7.widget.RecyclerView$Adapter.notifyItemInserted(RecyclerView.java:6211)
     at com.sketchproject.infogue.fragments.MessageFragment.loadMessages(MessageFragment.java:109)
     at com.sketchproject.infogue.fragments.MessageFragment.access$100(MessageFragment.java:42)
     at com.sketchproject.infogue.fragments.MessageFragment$1.onLoadMore(MessageFragment.java:87)
     at com.sketchproject.infogue.modules.EndlessRecyclerViewScrollListener.onScrolled(EndlessRecyclerViewScrollListener.java:74)
Run Code Online (Sandbox Code Playgroud)

当我删除部分错误(添加加载)它再次正常工作,我不知道为什么,更新版本的recyclerview阻止将数据添加到适配器太快或有回调函数,当"测量和布局"时触发recyclerview完了,这是我的代码

private void loadArticles(final int …
Run Code Online (Sandbox Code Playgroud)

android recycler-adapter android-recyclerview

44
推荐指数
2
解决办法
2万
查看次数