ViewPager复用

ViewPager复用代码很简单,记录一下importandroid.support.v4.view.PagerAdapter;importandroid.support.v4.view.ViewPager;importandroid.support.v7.app.AppCompatActivity;importandroid.os.Bundle;importandroid.view.View;…

大家好,又见面了,我是你们的朋友全栈君。

代码很简单,记录一下
主要是用LinkedList在destroyItem中添加移除的View,在instantiateItem中复用移除的View。

import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class MainActivity extends AppCompatActivity { 
   

    private PagerAdapter mPagerAdapter;
    private List<String> mDataList = new ArrayList<>();
    private Button mUpdate, mDelete, mAdd, mClean;
    private LinkedList<View> mViewCache = new LinkedList<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mDataList.add("1");
        mDataList.add("2");
        mDataList.add("3");
        mDataList.add("4");
        mDataList.add("5");

        ViewPager viewPager = findViewById(R.id.viewPager);
        viewPager.setAdapter(mPagerAdapter = new PagerAdapter() {
            @Override
            public int getCount() {
                return mDataList.size();
            }

            @Override
            public boolean isViewFromObject(View view, Object object) {
                return view == object;
            }


            @Override
            public Object instantiateItem(ViewGroup container, int position) {
                View view = mViewCache.size() > 0 ? mViewCache.removeFirst() : null;
                String str = "";
                if (view == null) {
                    view = View.inflate(MainActivity.this, R.layout.item_pager, null);
                    str = "";
                } else{
                    str = "复用了position为= " + view.getTag() + " 的Item";
                }
                TextView textView = view.findViewById(R.id.pager_tv);
                textView.setText(str + "\n" +mDataList.get(position));
                view.setTag(position);
                container.addView(view);
                return view;
            }

            @Override
            public void destroyItem(ViewGroup container, int position, Object object) {
                View deleteView = (View) object;
                container.removeView(deleteView);
                mViewCache.add(deleteView);
            }

        });

    }

}

这里写图片描述

微信公众号
这里写图片描述

随意打赏
这里写图片描述

QQ群:365473065

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163220.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • CSS的超链接样式设计

    CSS的超链接样式设计超链接是网页中最常用的对象,每个网页通过超链接相互联系在一起,从而构成一个完整的网站。而根据路径的不同,超链接可以分为以下三类:内部链接:内部链接所链接的目标一般位于同一个网站中,对于内部链接来说

    2022年7月4日
    25
  • 2019 最新 JAVA eclipse 中文汉化包 安装教程&Eclipse 汉化教程完美版

    2019 最新 JAVA eclipse 中文汉化包 安装教程&Eclipse 汉化教程完美版2019最新JAVAeclipse中文汉化包安装教程https://blog.csdn.net/qq_40763929/article/details/83067921Eclipse汉化教程完美版https://blog.csdn.net/weixin_39626452/article/details/80631849…

    2022年5月9日
    104
  • mybatis对应jdbc类型_java如何判断两个字符串是否相等

    mybatis对应jdbc类型_java如何判断两个字符串是否相等1.Mybatis支持的JDBC类型为了未来的参考,MyBatis通过包含的jdbcType枚举型,支持下面的JDBC类型。1 2 3 4 5 6 BIT FLOAT CHAR TIMESTAMP OTHER UNDEFINED TINYINT REAL VARCHAR BINARY BLOB …

    2022年10月9日
    0
  • 成功解决Address localhost:1099 is already in use

    成功解决Address localhost:1099 is already in use前言本文所说的内容适用于java的端口被占用Tomcat端口被占用的情况,可以参考解决方式二!报错过程今天使用IDEA启动项目的时候,报了下列错误:Addresslocalhost:1099isalreadyinuse问题分析这是端口号被占用了,已经有其他应用正在使用这个端口号问题解决方式一:按快捷键Ctrl+Shift+Esc打开任务管理器…………

    2022年7月20日
    16
  • SORT 多目标跟踪算法笔记[通俗易懂]

    SORT 多目标跟踪算法笔记[通俗易懂]sort是一种简单的在线实时多目标跟踪算法。文章要点为:以IoU作为前后帧间目标关系度量指标;利用卡尔曼滤波器预测当前位置;通过匈牙利算法关联检测框到目标;应用试探期甄别虚检;使用FasterR-CNN,证明检测好跟踪可以很简单。技术方案所提方法以检测作为关键组件,传播目标状态到未来帧中,将当前检测与现有目标相关联,并管理跟踪目标的生命周期。Detection为从…

    2022年10月23日
    0
  • 一个简单的WPF字体选择器实现

    很久没有写博客了。这是放暑假中的第一篇博客,以后会多多更新!!!这就是我写的一个字体选择器,界面如下:本程序用到的技术比较简单,仅仅是用了Font类的几个方法和数据绑定而已。首先建一个四行两列

    2021年12月27日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号