欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android viewpager中动态添加view并实现伪无限循环的方法

程序员文章站 2023-12-20 10:47:40
本文实例讲述了android viewpager中动态添加view并实现伪无限循环的方法。分享给大家供大家参考,具体如下: viewpager的使用,大家都熟悉,它可以实...

本文实例讲述了android viewpager中动态添加view并实现伪无限循环的方法。分享给大家供大家参考,具体如下:

viewpager的使用,大家都熟悉,它可以实现页面之间左右滑动的切换,这里有一个需求,就是viewpager里面加载的页数不是确定的,而是根据数据的多少来确定的。常见的应用就是在一个新闻的详细页面中,显示与此新闻有关的图片。

下面我们来看一下代码:

activity_main.xml

<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent" >
  <android.support.v4.view.viewpager
    android:id="@+id/list_pager"
    android:layout_width="fill_parent"
    android:layout_height="150dp"
    />
</relativelayout>

fragment_page.xml

<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:gravity="center"
  android:background="#ffff44">
  <textview
    android:id="@+id/txt_num"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:text="1"
    android:textsize="22dp"
    android:gravity="center"/>
</linearlayout>

viewpageadapter.java

import android.support.v4.view.pageradapter;
import android.view.view;
import android.view.viewgroup;
import java.util.list;
/**
 * created by cg on 2015/10/28.
 */
public class viewpageadapter extends pageradapter {
  private list<view> list_view;
  public viewpageadapter(list<view> list_view) {
    this.list_view = list_view;
  }
  @override
  public int getcount() {
    return integer.max_value;
  }
  @override
  public boolean isviewfromobject(view view, object object) {
    return view==object;
  }
  @override
  public object instantiateitem(viewgroup container, int position) {
    container.addview(list_view.get(position % list_view.size()));
    return list_view.get(position % list_view.size());
  }
  @override
  public void destroyitem(viewgroup container, int position, object object) {
    container.removeview(list_view.get(position % list_view.size()));
  }
}

mainactivity.java

import android.os.bundle;
import android.support.v4.view.viewpager;
import android.support.v7.app.appcompatactivity;
import android.view.layoutinflater;
import android.view.view;
import android.widget.textview;
import java.util.arraylist;
import java.util.list;
/**
 * 动态在viewpager中添加view,并实现无限循环
 */
public class mainactivity extends appcompatactivity {
  private viewpager list_pager;
  private list<view> list_view;
  private viewpageadapter adpter;
  @override
  protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.activity_main);
    list_pager = (viewpager)findviewbyid(r.id.list_pager);
    list_view = new arraylist<>();
    //这里只设置了4.因为在实现应用中,我们在页面加载的时候,你会根据数据的多少,而知道这个页面的数量
    //一般情况下,我们会根据list<>或是string[]这样的数组的数量来判断要有多少页
    for(int i=0;i<4;i++)
    {
      view view = layoutinflater.from(this).inflate(r.layout.fragment_page,null);
      textview txt_num = (textview)view.findviewbyid(r.id.txt_num);
      txt_num.settext(i + "");
      list_view.add(view);
    }
    adpter = new viewpageadapter(list_view);
    list_pager.setadapter(adpter);
    // 刚开始的时候 吧当前页面是先到最大值的一半 为了循环滑动
    int currentitem = integer.max_value / 2;
    // 让第一个当前页是 0
    //currentitem = currentitem - ((integer.max_value / 2) % 4);
    list_pager.setcurrentitem(currentitem);
  }
}

效果图:

Android viewpager中动态添加view并实现伪无限循环的方法

希望本文所述对大家android程序设计有所帮助。

上一篇:

下一篇: