Android:ListView 条件滚动

标签 android

我有一个 2 Pane 布局。左边是一个ListView,右边是一些与列表链接的内容。内容是可滚动的。 如果内容向前移动,我希望列表仅在该项目尚未显示时向前移动。这可以防止列表必须在每次内容更改时更新。我还希望该列表向前显示一整页。 有没有类似的东西

listView.isThisElementCurrentlyShown(int nr)

listView.moveAheadOnePage(int direction)

?

提前致谢。

最佳答案

这是 isThisElementCurrentlyShown(Element e) 的示例:

    public boolean isThisElementCurrentlyShown(Element e){
                ListView lv = getListView();
                int start = lv.getFirstVisiblePosition();
                for(int i=start, j=lv.getLastVisiblePosition();i<=j;i++){
                    if(e==lv.getItemAtPosition(i)){
                        return true;
                    }
                }
                return false;
}

这将告诉您该元素是否可见。

对于 moveAheadOnePage,您应该能够使用 ListView 的内置函数 getFirstVisiblePosition()getLastVisiblePosition() 来计算行数在该设备上可见,然后将 ListView 提前那么多位置。像这样的伪代码(你必须写这个):

public void moveAheadOnePage(int direction){//direction: 0-up, 1-down
    int numVisibleRows = getLastVisiblePosition() - getFirstVisiblePosition();
    this.setSelected(currentSelection + numVisibleRows) // +/- depending on direction
}

请注意,在 ListView 中滚动时,这些都是昂贵的调用,因此您一定要明智地实现~

编辑:更新代码以包含 return false

关于Android:ListView 条件滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14467660/

相关文章:

android - 为什么它在 Activity 销毁后在服务上抛出 android.os.NetworkOnMainThreadException?

android - "C2D_message is not unique"尝试制作标志 apk

android - 动态地将数据提供给列表

android - 在 BasicRenderScript 示例中找不到 ScriptC_saturation

android - Android 上的应用内屏幕录制每秒捕获 15 帧

android - 如何将我的一个 Android 应用程序转移到另一个 Android 开发者帐户(不是我的)

Android如何在隐藏 View 时使用自动布局移动其他 View ?

android - 缺少 Parcelable CREATOR 字段?

java - 如何在recyclerview适配器中使用getItematposition()作为ListView

java - 支持多屏(手机和平板)