Andoid - 开发实例(2): ViewPager卡片式界面2
16lz
2021-01-23
之前我们使用的是android.support.v4.view.PagerAdapter,现在我们换用 android.support.v4.app.FragmentPagerAdapter。
文档上面有官方的示例代码:
android-sdk-windows/docs/reference/android/support/v4/app/FragmentPagerAdapter.html
废话少说,贴上我的代码
main.xml
<?xml version="1.0" encoding="utf-8"?>
list.xml
<?xml version="1.0" encoding="utf-8"?>
package com.test;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.app.ListFragment;import android.support.v4.view.ViewPager;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.ListView;import android.widget.TextView;public class ViewPager4Activity extends FragmentActivity {//这个常量是指定你一共有多少个卡片,我这里是10,就是有10张卡片(页面)static final int NUM_ITEMS = 10;MyAdapter mAdapter;ViewPager mPager;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);mAdapter = new MyAdapter(getSupportFragmentManager());mPager = (ViewPager) findViewById(R.id.pager);mPager.setAdapter(mAdapter);//返回页首和页尾,也就是第一张卡片和第十张卡片Button button = (Button) findViewById(R.id.goto_first);button.setOnClickListener(new OnClickListener() {public void onClick(View v) {mPager.setCurrentItem(0);}});button = (Button) findViewById(R.id.goto_last);button.setOnClickListener(new OnClickListener() {public void onClick(View v) {mPager.setCurrentItem(NUM_ITEMS - 1);}});}public static class MyAdapter extends FragmentPagerAdapter {public MyAdapter(FragmentManager fm) {super(fm);}@Overridepublic int getCount() {return NUM_ITEMS;}@Overridepublic Fragment getItem(int position) {return ArrayListFragment.newInstance(position);}}public static class ArrayListFragment extends ListFragment {int mNum;public static final String[] sCheeseStrings = { "Abbaye de Belloc","Abbaye du Mont des Cats", "Abertam", "Abondance", "Ackawi", "Acorn","Adelost", "Affidelice au Chablis", "Afuega'l Pitu", "Airag", "Airedale","Aisy Cendre", "Allgauer Emmentaler" };static ArrayListFragment newInstance(int num) {ArrayListFragment f = new ArrayListFragment();// Supply num input as an argument.Bundle args = new Bundle();args.putInt("num", num);f.setArguments(args);return f;}@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);mNum = getArguments() != null ? getArguments().getInt("num") : 1;}//这里是初始化页面内容的函数,我们的监听就是在这儿@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View v = inflater.inflate(R.layout.list, container, false);View text = v.findViewById(R.id.text);((TextView) text).setText("Fragment #" + mNum);text.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubSystem.out.println("点击成功!");}});return v;}@Overridepublic void onActivityCreated(Bundle savedInstanceState) {super.onActivityCreated(savedInstanceState);setListAdapter(new ArrayAdapter(getActivity(),android.R.layout.simple_list_item_1, sCheeseStrings));}@Overridepublic void onListItemClick(ListView l, View v, int position, long id) {Log.i("FragmentList", "Item clicked: " + id);}}}
写监听可以 让 ArrayListFragment , implement OnClickListener 即可
当有很多卡片时,得在 onCreateView 函数中 把不同的layout找出不来,分别进行监听
if (mNum == 0) {v = inflater.inflate(R.layout.xx, container, false);}
更多相关文章
- android实现swipe的手势及页面拖动动画
- sencha touch 调用android主函数里的方法(可用与phoneGap开发第三
- android的帮助、about、关于作者、HELP等的提示页面
- Android Intent实现页面跳转的方法示例
- 用CSS3生成的一个漂亮的android客户端页面
- Android ViewPager多页面滑动切换以及单页卡内添加事件
- Android sql数据库的Android包里面的函数介绍
- Android中调用C++函数的一个简单Demo