- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
RecyclerView
有一个 InfiniteScrollListener 并且在该监听器内部,在 OnScrolled()
方法中我计算可见项和总项数以检查是否应加载新项。当totalItemCount 和visibleItemCount 相同时,会导致无限循环加载。监听器与我的其他 RecyclerView
完美配合,这些 RecyclerView
没有 CoordinatorLayout
或 NestedScrollView
作为父级。我想保留此结构,因为客户不会接受更改。
我在一个具有这样布局的 Activity 中有一个 fragment
CoordinatorLayout{
NestedScrollView{
RecyclerView{
}
}
}
compileSdkVersion 24
buildToolsVersion "23.0.3"
...
minSdkVersion 21
targetSdkVersion 24
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay"
app:layout_behavior="com.paxotic.paxira.util.behavior.AppBarFlingBehavior">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/toolbar_layout"
android:layout_width="match_parent"
android:layout_height="@dimen/app_bar_height_small"
app:contentScrim="?attr/colorPrimary"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000"
app:layout_collapseMode="parallax">
<ImageView
android:id="@+id/img_background"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alpha="0.5"
android:scaleType="centerCrop"
tools:src="@drawable/bg_greeting_activity" />
</RelativeLayout>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<include
layout="@layout/activity_profile_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<android.support.design.widget.FloatingActionButton
... />
</android.support.design.widget.CoordinatorLayout>
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
...
<android.support.v7.widget.RecyclerView
android:id="@+id/feedRecycler"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:paddingBottom="@dimen/spacing_normal"
tools:listitem="@layout/list_item_activity" />
...
</android.support.v4.widget.NestedScrollView>
private void init() {
feedAdapter = new FeedAdapter(host);
feedAdapter.setHasStableIds(true);
LinearLayoutManager layoutManager = new LinearLayoutManager(host);
feedRecycler.setLayoutManager(layoutManager);
feedRecycler.setNestedScrollingEnabled(false);
feedRecycler.setHasFixedSize(true);
feedRecycler.setAdapter(feedAdapter);
infiniteScrollListener = new InfiniteScrollListener(host, layoutManager) {
@Override
public void onLoadMore(int pageIndex) {
if (!feedAdapter.isLoading) {
loadFeed(pageIndex);
}
}
};
feedRecycler.addOnScrollListener(infiniteScrollListener);
}
public abstract class InfiniteScrollListener extends RecyclerView.OnScrollListener {
private int previousTotal = 0; // The total number of items in the dataset after the last load
private boolean loading = false; // True if we are still waiting for the last set of data to load.
private static final int VISIBLE_THRESHOLD = 5; // The minimum amount of items to have below your current scroll position before loading more.
int firstVisibleItem, visibleItemCount, totalItemCount;
private int current_page = 0;
private int loadingItemCount;
private LinearLayoutManager mLinearLayoutManager;
public InfiniteScrollListener(Context context, LinearLayoutManager linearLayoutManager) {
this.mLinearLayoutManager = linearLayoutManager;
loadingItemCount = context.getResources().getInteger(R.integer.feed_pull_item_count);
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
if (dy < 0) return; // check for scroll down
visibleItemCount = mLinearLayoutManager.getChildCount();
totalItemCount = mLinearLayoutManager.getItemCount();
firstVisibleItem = mLinearLayoutManager.findFirstVisibleItemPosition();
synchronized (this) {
if (!loading && (totalItemCount - visibleItemCount) <= (firstVisibleItem + VISIBLE_THRESHOLD)) {
// End has been reached, Do something
current_page++;
onLoadMore(current_page);
loading = true;
}
}
}
public abstract void onLoadMore(int current_page);
public void setLoading(boolean loading) {
this.loading = loading;
}
@Override
public void onScrollStateChanged(RecyclerView view, int scrollState) {
// Don't take any action on changed
}
}
最佳答案
您从 getChildCount() getItemCount()
获得相同的值,因为 recyclerview 将返回项目/子项的总数。
您必须根据您的用法覆盖其中一种方法,以获得您想要的值。在您的自定义 recyclerview 适配器中执行此操作。
为此,将其添加到您的 recyclerview 适配器中:
@Overide
public int getChildCount() {
//return your desired value here after obtaining it
}
关于java - RecyclerView getChildCount() 和 getItemCount() 返回相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38362058/
我有一个带有一个静态 ImageView 的框架布局,其中随机放置其他 ImageView 。我想使用“getChildCount”来获取那些随机放置的ImageView的数量,但它也指的是静态的。我
有谁知道什么可能导致 viewPager.getChildCount() 返回零?我在 onCreate 中执行了 findViewById,并且我还执行了 viewPager.setAdapter
在我的 Activity 类中,我在 setContentView() 行之后有以下代码。 gridView = (GridView)findViewById(R.id.splitted_grid);
这个问题在这里已经有了答案: getChildCount() returns incorrect number of children (2 个答案) 关闭 5 年前。 我在 LinearLayou
我创建了一个包含动态 EditText 字段的 RecyclerView。当 EditText 字段中的值被编辑时,我需要通过单击按钮来保存它们。我正在使用 recyclerView.getChild
我创建了一个带有 X 按钮的自定义 TextView,单击该按钮时其可见性设置为 GONE。现在我想获取 LinearLayout 中可见的 TextViews 的数量。目前,我得到的是插入的 Tex
我正在尝试更改应用程序标题的字体。为此,我决定遍历工具栏,找到标题 TextView,然后设置字体。 Toolbar toolbar = (Toolbar) findViewById(R.id
我需要能够分辨 ListView 中的哪些项目是可见的。 onScroll 中的“visibleItemCount”项和listview.getChildCount这两个返回值通常比它们应该基于屏幕上
我从ArrayList(listaprac)填充Spinner(SpinnerPrac)。 Spinner 工作正常,但我想为最后一个元素setTextColor。 这是我的适配器 ArrayAda
我有一个 MainActivity 和一个我在 onCreate() 中设置的 ViewPager。 MainActivity 启动 CatActivity 获取结果。在 onActivityResu
如何统计gridview中的所有元素。比如我有一个gridview,里面有20个textview。启动程序时,我们只能看到,例如 10(因为屏幕小)。在这种情况下,如果我调用函数: System.ou
我正在编写一个 Java 树,其中树节点可能有需要很长时间计算的子节点(在这种情况下,它是一个文件系统,其中可能存在网络超时,阻止从附加的文件中获取文件列表驱动器)。 我发现的问题是: getChil
RecyclerView 有一个 InfiniteScrollListener 并且在该监听器内部,在 OnScrolled() 方法中我计算可见项和总项数以检查是否应加载新项。当totalItemC
我需要检查 ListView 上的所有元素以仅将标签设置为其中之一。我无法编辑数据库或适配器,我只想滚动 ListView 以执行检查并在 TextView 上设置字符串。 @Override pro
我正在尝试计算 RecyclerView 子项的数量。我试过这个: myRView.getChildCount(); 还有这个: LinearLayoutManager lm = ((LinearLa
我正在尝试为我的 Android 应用程序设置一些测试,并且我正在测试在数据库中创建的条目是否显示在我的 ListView 中。 这里是一些代码 fragment : mDbHelper.create
我想从 facebook 加载图像并填充到 ListView 中,我能够获取 friend 列表和他们的信息,但我想设置图像我正在获取 getChildCount() 0,请帮忙, public
ListView中的getCount()和getChildCount()有什么区别? 最佳答案 getCount() 会返回 Adapter 中的项目计数(列表中的总数),getChildCount(
本文整理了Java中com.thoughtworks.xstream.io.xml.xppdom.Xpp3Dom.getChildCount()方法的一些代码示例,展示了Xpp3Dom.getChil
我有一个带有两个选项卡的 TabActivity,显示两个列表。我使用 tabHost.getTabWidget().getChildCount() 来动态更改选项卡指示器。但是在启动应用程序时,ge
我是一名优秀的程序员,十分优秀!