文档章节

ListView和RecyclerView的ItemsPositionGetter

GalaxyBruce
 GalaxyBruce
发布于 2016/04/29 14:48
字数 224
阅读 47
收藏 0
public interface ItemsPositionGetter {
    View getChildAt(int position);

    int indexOfChild(View view);

    int getPositionForView(View view);

    View getViewByPosition(int position);

    int getChildCount();

    int getLastVisiblePosition();

    int getFirstVisiblePosition();
}
public class ListViewItemPositionGetter implements ItemsPositionGetter{

    private final ListView mListView;

    public ListViewItemPositionGetter(ListView listView) {
        mListView = listView;
    }

    @Override
    public View getChildAt(int position) {
        return mListView.getChildAt(position);
    }

    @Override
    public int indexOfChild(View view) {
        return mListView.indexOfChild(view);
    }

    @Override
    public int getPositionForView(View view) {
        return  mListView.getPositionForView(view);
    }

    @Override
    public View getViewByPosition(int position) {
        final int firstListItemPosition = mListView.getFirstVisiblePosition();
        final int lastListItemPosition = firstListItemPosition + mListView.getChildCount() - 1;

        if (position < firstListItemPosition || position > lastListItemPosition ) {
            return mListView.getAdapter().getView(position, null, mListView);
        } else {
            final int childIndex = position - firstListItemPosition;
            return mListView.getChildAt(childIndex);
        }
    }

    @Override
    public int getChildCount() {
        return mListView.getChildCount();
    }

    @Override
    public int getLastVisiblePosition() {
        return mListView.getLastVisiblePosition();
    }

    @Override
    public int getFirstVisiblePosition() {
        return mListView.getFirstVisiblePosition();
    }
}
public class RecyclerViewItemPositionGetter implements ItemsPositionGetter {

    private static final boolean SHOW_LOGS = Config.SHOW_LOGS;
    private static final String TAG = RecyclerViewItemPositionGetter.class.getSimpleName();

    private LinearLayoutManager mLayoutManager;
    private RecyclerView mRecyclerView;

    public RecyclerViewItemPositionGetter(LinearLayoutManager layoutManager, RecyclerView recyclerView) {
        mLayoutManager = layoutManager;
        mRecyclerView = recyclerView;
    }

    @Override
    public View getChildAt(int position) {

        View view = mLayoutManager.getChildAt(position);


        return view;
    }

    @Override
    public int indexOfChild(View view) {
        int indexOfChild = mRecyclerView.indexOfChild(view);
        return indexOfChild;
    }

    @Override
    public int getPositionForView(View view) {
        return  mLayoutManager.getPosition(view);//mRecyclerView.getChildAdapterPosition(view)
    }

    @Override
    public View getViewByPosition(int position) {
        return  mLayoutManager.findViewByPosition(position);
    }

    @Override
    public int getChildCount() {
        int childCount = mRecyclerView.getChildCount();
        return childCount;
    }

    @Override
    public int getLastVisiblePosition() {
        return mLayoutManager.findLastVisibleItemPosition();
    }

    @Override
    public int getFirstVisiblePosition() {
        return mLayoutManager.findFirstVisibleItemPosition();
    }
}


© 著作权归作者所有

共有 人打赏支持
GalaxyBruce
粉丝 2
博文 75
码字总数 35340
作品 0
南京
高级程序员
私信 提问
Android在滚动列表中实现视频的播放(ListView & RecyclerView)

英文原文:Implementing video playback in a scrolled list (ListView & RecyclerView) 本文将讲解如何在列表中实现视频播放。类似于诸如 Facebook, Instagram 或者 Magisto这些热门应用的效...

xiaole0313
2017/09/18
0
0
Android控件RecyclerView和ListView的异同

在我的一篇介绍Android新控件RecyclerView的博客( Android L新控件RecyclerView简介 )中,一个读者留言说RecyclerView跟ListView之间好像没有什么不同,我觉得这是一个好问题,应该明确地区...

小克898
2016/08/16
27
0
android之recyclerview的基本使用

Google在推出Android5.0的时候推出了Material Design ,而RecyclerView是Material Design 重要组件之一。当然还有CardView/Palette。 RecyclerView是用来替换传统的ListView和GridView,瀑布流...

墨宇hz
2016/03/21
0
0
【Android】RecyclerView

RecyclerView RecyclerView简明 RecyclerView 在v7.21+包中,是一个用来展示大量数据的组件,或者说,就是ListView的改善版本(注:现阶段的功能没有ListView完善,因此想完全取代ListView的...

xesam
2014/12/02
0
0
Android RecyclerView

简介: RecyclerView是support-v7包中的新组件,是一个强大的滑动组件,与经典的ListView相比,同样拥有item回收复用的功能,但是直接把viewholder的实现封装起来,用户只要实现自己的viewh...

姠眀兲汻蒝
2015/11/24
134
0

没有更多内容

加载失败,请刷新页面

加载更多

SpringBoot项目如何访问jsp页面

1.添加pom依赖 首先在原来的pom文件基础上加上这两个配置 如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:7877071...

编程SHA
5分钟前
0
0
nginx反向代理配置去除前缀

使用nginx做反向代理的时候,可以简单的直接把请求原封不动的转发给下一个服务。设置proxy_pass请求只会替换域名,如果要根据不同的url后缀来访问不同的服务,则需要通过如下方法: 方法一:...

架构师springboot
37分钟前
2
0
QianBill API 开发笔记

JWT

BeanHo
48分钟前
3
0
Elasticsearch实战篇——Spring Boot整合ElasticSearch

当前Spring Boot很是流行,包括我自己,也是在用Spring Boot集成其他框架进行项目开发,所以这一节,我们一起来探讨Spring Boot整合ElasticSearch的问题。 本文主要讲以下内容: 第一部分,通...

JAVA_冯文议
58分钟前
3
0
不错的linux下通用的java程序启动脚本

#!/bin/sh#该脚本为Linux下启动java程序的通用脚本。即可以作为开机自启动service脚本被调用,#也可以作为启动java程序的独立脚本来使用。##Author: tudaxia.com, Date: 2011/6/7...

sprouting
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部