ViewPager加上Fragment 显示ListView

来源:互联网 发布:三国演义电视剧 知乎 编辑:程序博客网 时间:2024/06/06 16:33
主方法


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


import android.app.Activity;
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;


public class MainActivity extends FragmentActivity {
ViewPager vp;
List<Fragment> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

/*
* 1.初始化控件
* 2、初始化数据
* 3、创建adapter对象
* 4、绑定
*/
vp = (ViewPager) findViewById(R.id.vp);
initData();
//因为继承FragmentActivity 那么我们就可以在该类中获取到  这个Fragment管理器
FragmentManager fm = getSupportFragmentManager();
MyFragmentPagerAdapter adapter = new MyFragmentPagerAdapter(fm);
vp.setAdapter(adapter);
}


private void initData() {
list = new ArrayList<Fragment>();
list.add(new FragmentOne());
list.add(new FragmentTwo());
}

class MyFragmentPagerAdapter extends FragmentPagerAdapter{


public MyFragmentPagerAdapter(FragmentManager fm) {
super(fm);
// TODO Auto-generated constructor stub
}


/**
* 该方法是用来返回显示的  item  就是 Fragment对象
* arg0 就是当前viewpager的position
*/
@Override
public Fragment getItem(int arg0) {
// TODO Auto-generated method stub
return list.get(arg0);
}


@Override
public int getCount() {
// TODO Auto-generated method stub
if(list != null){
return list.size();
}
return 0;
}

}


}


主方法的布局


    <android.support.v4.view.ViewPager
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/vp"
        >
    </android.support.v4.view.ViewPager>


第一个Fargment


package com.example.day8viewpagerfragment;


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


import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;


//推荐使用support.v4包中的fragment
//因为该包是用来支持3.0版本一下的手机的
public class FragmentOne extends Fragment{

List<String> list;

//为该fragment 设置一个现实的  view
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
/*
* 1、作为fragment要显示的视图  可以使用View.inflate引入
* 2、在引入布局文件的时候 需要用到activity的上下文
* 问题:因为当前是在Fragment类中  如果来获取该view需要显示的Activity上下问
*   思考,之前说过  fragment的使用必须依赖于Activity,
*   所以api提供了一个方法  可以在Fragment中获取依赖的Activity对象
*/
View view = View.inflate(getActivity(), R.layout.frag_left, null);

/*
* 1
* 2
* 3
* 4
*/
ListView lv = (ListView) view.findViewById(R.id.frag_left_lv);
initData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, list);
lv.setAdapter(adapter);

return view;
}


private void initData() {
list = new ArrayList<String>();
for (int i = 0; i < 20; i++) {
list.add("导航" + i);
}

}
}


第一个布局

    <ListView 
        android:id="@+id/frag_left_lv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        ></ListView>


第二个Fragmet

找到第二个布局就好


第二个布局

    <ImageView 
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@drawable/ic_launcher"
        />
    <TextView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="我是一只机器人"
        />



原创粉丝点击