如何把pageadapter改为fragment state pager adapter

简介:

http://www.eoeandroid.com/qa/2012/0611/1624.html

问题

  package com.gov.android;
  import java.util.ArrayList;
  import java.util.List;
  import viewpager.ViewPageAdapter;
  import com.gov.android.R;
  import android.app.Activity;
  import android.content.Intent;
  import android.graphics.BitmapFactory;
  import android.os.Bundle;
  import android.support.v4.view.ViewPager;
  import android.support.v4.view.ViewPager.OnPageChangeListener;
  import android.view.LayoutInflater;
  import android.view.View;
  import android.widget.Button;
  import android.widget.ImageView;
  import android.widget.LinearLayout;
  public class ViewPageActivity extends Activity implements android.view.View.OnClickListener, OnPageChangeListener{
  private ViewPager mViewPager;
  private ViewPageAdapter mPageAdapter;
  private List<View> mListViews;
  private Button startnow;
  private final static int viewBackground[] = {R.drawable.view1,
  R.drawable.view2,
  R.drawable.view3,
  R.drawable.view4,
  R.drawable.view5,
  R.drawable.view6,
  R.drawable.view7};
  private ImageView[] mImageViews;
  private int mViewCount;
  private int mCurSel;
  public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main_viewpage_layout);
  startnow=(Button) findViewById(R.id.startnow);
  startnow.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
  // TODO Auto-generated method stub
  Intent intent=new Intent();
  intent.setClass(ViewPageActivity.this, WlwzActivity.class);
  startActivity(intent);
  ViewPageActivity.this.finish();
  }
  });
  initViewPage();
  init();
  }
  private void initViewPage()
  {
  mListViews = new ArrayList<View>();
  LayoutInflater mLayoutInflater = getLayoutInflater();
  BitmapFactory.Options options = new BitmapFactory.Options();
  options.inJustDecodeBounds = true;
  mViewCount = viewBackground.length;
  for(int i = 0; i < mViewCount; i++)
  {
  // BitmapFactory.decodeResource(getResources(), viewBackground[i], options);
  View view = mLayoutInflater.inflate(R.layout.layout, null);
  view.setBackgroundResource(viewBackground[i]);
  // view.setBackgroundResource(decodeSampledBitmapFromResource(getResources(), viewBackground[i], 100, 100));
  mListViews.add(view);
  }
  mPageAdapter = new ViewPageAdapter(mListViews);
  mViewPager = (ViewPager) findViewById(R.id.viewpager);
  mViewPager.setAdapter(mPageAdapter);
  mViewPager.setOnPageChangeListener(this);
  }
  private void init()
  {
  LinearLayout linearLayout = (LinearLayout) findViewById(R.id.llayout);
  mImageViews = new ImageView[mViewCount];
  for(int i = 0; i < mViewCount; i++)
  {
  mImageViews[i] = (ImageView) linearLayout.getChildAt(i);
  mImageViews[i].setEnabled(true);
  mImageViews[i].setOnClickListener(this);
  mImageViews[i].setTag(i);
  }
  mCurSel = 0;
  mImageViews[mCurSel].setEnabled(false);
  }
  private void setCurView(int pos)
  {
  if (pos < 0 || pos >= mViewCount)
  {
  return ;
  }
  mViewPager.setCurrentItem(pos);
  }
  private void setCurPoint(int index)
  {
  if (index < 0 || index > mViewCount - 1 || mCurSel == index)
  {
  return ;
  }
  mImageViews[mCurSel].setEnabled(true);
  mImageViews[index].setEnabled(false);
  mCurSel = index;
  }
  @Override
  public void onClick(View v) {
  // TODO Auto-generated method stub
  int pos = (Integer)v.getTag();
  setCurView(pos);
  setCurPoint(pos);
  }
  @Override
  public void onPageScrollStateChanged(int arg0) {
  // TODO Auto-generated method stub
  }
  @Override
  public void onPageScrolled(int arg0, float arg1, int arg2) {
  // TODO Auto-generated method stub
  }
  @Override
  public void onPageSelected(int arg0) {
  // TODO Auto-generated method stub
  setCurPoint(arg0);
  if( arg0 == mViewCount -1 ){
  startnow.setVisibility(View.VISIBLE);
  } else{
  startnow.setVisibility(View.GONE);
  }
  }
  }
  

pageadapter代码如下

  package viewpager;
  import java.util.List;
  import android.os.Parcelable;
  import android.support.v4.view.PagerAdapter;
  import android.support.v4.view.ViewPager;
  import android.util.Log;
  import android.view.View;
  public class ViewPageAdapter extends PagerAdapter{
  private final static String TAG = "MyPagerAdapter";
  List<View> mViewList;
  public ViewPageAdapter(List<View> viewList)
  {
  mViewList = viewList;
  }
  @Override
  public int getCount() {
  // TODO Auto-generated method stub
  if (mViewList != null)
  {
  return mViewList.size();
  }
  return 0;
  }
  @Override
  public Object instantiateItem(View view, int index) {
  // TODO Auto-generated method stub
  ((ViewPager) view).addView(mViewList.get(index), 0);
  return mViewList.get(index);
  }
  @Override
  public void destroyItem(View view, int position, Object arg2) {
  // TODO Auto-generated method stub
  ((ViewPager) view).removeView(mViewList.get(position));
  }
  @Override
  public void finishUpdate(View arg0) {
  // TODO Auto-generated method stub
  }
  @Override
  public boolean isViewFromObject(View view, Object obj) {
  // TODO Auto-generated method stub
  return (view == obj);
  }
  @Override
  public void restoreState(Parcelable arg0, ClassLoader arg1) {
  // TODO Auto-generated method stub
  }
  @Override
  public Parcelable saveState() {
  // TODO Auto-generated method stub
  return null;
  }
  @Override
  public void startUpdate(View arg0) {
  // TODO Auto-generated method stub
  // Log.i(TAG, "startUpdate");
  }
  }
  

解答

  import android.os.Bundle;
  import android.support.v4.app.Fragment;
  import android.support.v4.app.FragmentActivity;
  import android.support.v4.app.FragmentManager;
  import android.support.v4.app.FragmentPagerAdapter;
  import android.support.v4.view.ViewPager;
  import android.view.LayoutInflater;
  import android.view.View;
  import android.view.ViewGroup;
  import android.widget.ImageView;
  import android.widget.TextView;
  /**
  * @author archko
  */
  public class FragmentPagerSupport extends FragmentActivity {
  yAdapter mAdapter;
  ViewPager mPager;
  private final static int viewBackground[]={R.drawable.image,
  R.drawable.image,
  R.drawable.image,
  R.drawable.image,
  R.drawable.image,
  R.drawable.image,
  R.drawable.image};
  @Override
  protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.fragment_pager);
  mAdapter=new MyAdapter(getSupportFragmentManager());
  mPager=(ViewPager) findViewById(R.id.pager);
  mPager.setAdapter(mAdapter);
  }
  public static class MyAdapter extends FragmentPagerAdapter {
  public MyAdapter(FragmentManager fm) {
  super(fm);
  }
  @Override
  public int getCount() {
  return viewBackground.length;
  }
  @Override
  public Fragment getItem(int position) {
  return TestFragment.newInstance(position);
  }
  }
  public static class TestFragment extends Fragment {
  int mNum;
  /**
  * Create a new instance of CountingFragment, providing "num"
  * as an argument.
  */
  static TestFragment newInstance(int num) {
  TestFragment f=new TestFragment();
  // Supply num input as an argument.
  Bundle args=new Bundle();
  args.putInt("num", num);
  f.setArguments(args);
  return f;
  }
  /**
  * When creating, retrieve this instance's number from its arguments.
  */
  @Override
  public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  mNum=getArguments()!=null?getArguments().getInt("num"):1;
  }
  /**
  * The Fragment's UI is just a simple text view showing its
  * instance number.
  */
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
  Bundle savedInstanceState) {
  View v=inflater.inflate(R.layout.fragment_pager_list, container, false);
  ImageView iv=(ImageView) v.findViewById(R.id.image);
  iv.setImageResource(viewBackground[mNum]);
  return v;
  }
  @Override
  public void onActivityCreated(Bundle savedInstanceState) {
  super.onActivityCreated(savedInstanceState);
  }
  }
  }
  

R.layout.fragment_pager

  xml version="1.0" encoding="utf-8"?>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical" android:padding="4dip"
  android:gravity="center_horizontal"
  android:layout_width="fill_parent" android:layout_height="fill_parent">
  <android.support.v4.view.ViewPager
  android:id="@+id/pager"
  android:layout_width="fill_parent"
  android:layout_height="0px"
  android:layout_weight="1">
  </android.support.v4.view.ViewPager>
  </LinearLayout>
  

R.layout.fragment_pager_list:

  <?xml version="1.0" encoding="utf-8"?>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  <ImageView android:id="@+id/image"
  android:scaleType="fitCenter"
  android:layout_width="fill_parent" android:layout_height="fill_parent"/>
  </LinearLayout>
  

就这样,搞定。
相关文章
|
7天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
18天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1328 8
|
5天前
|
存储 人工智能 Java
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
本文讲解 Prompt 基本概念与 10 个优化技巧,结合学术分析 AI 应用的需求分析、设计方案,介绍 Spring AI 中 ChatClient 及 Advisors 的使用。
309 130
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
|
4天前
|
监控 JavaScript Java
基于大模型技术的反欺诈知识问答系统
随着互联网与金融科技发展,网络欺诈频发,构建高效反欺诈平台成为迫切需求。本文基于Java、Vue.js、Spring Boot与MySQL技术,设计实现集欺诈识别、宣传教育、用户互动于一体的反欺诈系统,提升公众防范意识,助力企业合规与用户权益保护。
|
17天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1404 87
|
4天前
|
JavaScript Java 大数据
基于JavaWeb的销售管理系统设计系统
本系统基于Java、MySQL、Spring Boot与Vue.js技术,构建高效、可扩展的销售管理平台,实现客户、订单、数据可视化等全流程自动化管理,提升企业运营效率与决策能力。
|
6天前
|
人工智能 Java API
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
本文介绍AI大模型的核心概念、分类及开发者学习路径,重点讲解如何选择与接入大模型。项目基于Spring Boot,使用阿里云灵积模型(Qwen-Plus),对比SDK、HTTP、Spring AI和LangChain4j四种接入方式,助力开发者高效构建AI应用。
309 122
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
|
6天前
|
弹性计算 安全 数据安全/隐私保护
2025年阿里云域名备案流程(新手图文详细流程)
本文图文详解阿里云账号注册、服务器租赁、域名购买及备案全流程,涵盖企业实名认证、信息模板创建、域名备案提交与管局审核等关键步骤,助您快速完成网站上线前的准备工作。
246 82
2025年阿里云域名备案流程(新手图文详细流程)