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程序设计有所帮助。