MainActivity页面
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private TextView mJia;
private TextView mLun;
private FrameLayout frame_layout;
private FragmentManager manager;
private LoaderFragment loaderFragment;
private CarouselFragment carouselFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//查找控件
initView();
}
private void initView() {
mJia = (TextView) findViewById(R.id.mJia);
mJia.setOnClickListener(this);
mLun = (TextView) findViewById(R.id.mLun);
mLun.setOnClickListener(this);
frame_layout = (FrameLayout) findViewById(R.id.frame_layout);
manager = getSupportFragmentManager();
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.mJia:
manager.beginTransaction().replace(R.id.frame_layout,new LoaderFragment()).commit();
break;
case R.id.mLun:
manager.beginTransaction().replace(R.id.frame_layout,new CarouselFragment()).commit();
break;
}
}
}
main_activity.xml页面
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:orientation="vertical"
android:layout_height="match_parent">
<TextView
android:layout_gravity="center_horizontal"
android:layout_marginTop="30dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="加载"
android:id="@+id/mJia"/>
<TextView
android:layout_gravity="center_horizontal"
android:layout_marginTop="30dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="轮播图"
android:id="@+id/mLun"/>
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_weight="3"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/frame_layout">
</FrameLayout>
</LinearLayout>
适配器
public class MyPageAdapter extends FragmentPagerAdapter {
private List mTitle;
private Context context;
private List mLists;
public MyPageAdapter(FragmentManager fm,List titles,List lists,Context contexts) {
super(fm);
this.mTitle = titles;
this.mLists = lists;
this.context = contexts;
}
@Override
public Fragment getItem(int i) {
return mLists.get(i);
}
@Override
public int getCount() {
return mLists.size();
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return mTitle.get(position);
}
}
加载的Fragment页面
public class LoaderFragment extends Fragment {
private View v;
private TabLayout tabLayout;
private ViewPager viewPager;
private List<String> mtitles = new ArrayList<>();
private List<Fragment> mFragment = new ArrayList<>();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
v = inflater.inflate(R.layout.fragment_loader,null);
initView();
initData();
//查找控件
MyPageAdapter adapter= new MyPageAdapter(getChildFragmentManager(),mtitles,mFragment,getActivity());
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager,true);
return v;
}
private void initData() {
mFragment.add(new XListViewFragment());
mFragment.add(new PullToRefreshFragment());
mtitles.add("XListViews");
mtitles.add("PullToRefresh");
}
private void initView() {
tabLayout = v.findViewById(R.id.tab_layout);
viewPager = v.findViewById(R.id.view_pager);
}
}
加载的xml页面
<android.support.design.widget.TabLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tab_layout"
></android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager
android:layout_below="@id/tab_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/view_pager"/>
PullToRefreshFragment 页面
public class PullToRefreshFragment extends Fragment {
private View v;
private String mUrl = "http://api.expoon.com/AppNews/getNewsList/type/1/p/";
private int index = 1;
private MyAdapter adapter;
private PullToRefreshListView pullTo;
private List<MyData.DataBean> mLists = new ArrayList<>();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
v = inflater.inflate(R.layout.fragment_pull_to_refresh,null);
initView();
pullTo.setMode(PullToRefreshBase.Mode.BOTH);
adapter = new MyAdapter(mLists,getActivity());
pullTo.setAdapter(adapter);
new MyTask().execute(mUrl+index);
setListener();
return v;
}
private void setListener() {
pullTo.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
//下拉刷新
mLists.clear();
new MyTask().execute(mUrl+1);
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
//上拉加载
new MyTask().execute(mUrl+(++index));
}
});
}
private void initView() {
pullTo = v.findViewById(R.id.pull_to);
}
class MyTask extends AsyncTask<String ,Void,List<MyData.DataBean>> {
@Override
protected List<MyData.DataBean> doInBackground(String... strings) {
try {
String jsonStr = Utils.get(strings[0]);
Gson gson = new Gson();
MyData data = gson.fromJson(jsonStr, MyData.class);
return data.getData();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(List<MyData.DataBean> dataBeans) {
super.onPostExecute(dataBeans);
mLists.addAll(dataBeans);
adapter.notifyDataSetChanged();
pullTo.onRefreshComplete();//停止刷新
}
}
}
PullToRefreshFragment的xml页面
<com.example.pulltolibrary.PullToRefreshListView
android:layout_width=“match_parent”
android:layout_height=“match_parent”
android:id="@+id/pull_to">
</com.example.pulltolibrary.PullToRefreshListView>
轮播的Fragment页面
public class CarouselFragment extends Fragment {
private View v;
private TabLayout tab;
private ViewPager view;
private List<String> mtitles = new ArrayList<>();
private List<Fragment> mFragment = new ArrayList<>();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
v = inflater.inflate(R.layout.fragment_carousel,null);
initView();
initData();
MyPageAdapter adapter= new MyPageAdapter(getChildFragmentManager(),mtitles,mFragment,getActivity());
view.setAdapter(adapter);
tab.setupWithViewPager(view,true);
return v;
}
private void initData() {
mFragment.add(new MyLunFragment());
mFragment.add(new BannerFragment());
mtitles.add("My轮播");
mtitles.add("Banner轮播");
}
private void initView() {
tab = v.findViewById(R.id.tab);
view = v.findViewById(R.id.view);
}
}
轮播的xml页面
<android.support.design.widget.TabLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tab"
></android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager
android:layout_below="@id/tab"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/view"/>
Banner轮播的页面
public class BannerFragment extends Fragment {
private View v;
private FlyBanner fly_banner;
private String[] mImagesUrl = {
"http://img4.imgtn.bdimg.com/it/u=2430963138,1300578556&fm=23&gp=0.jpg",
"http://img1.imgtn.bdimg.com/it/u=2755648979,3568014048&fm=23&gp=0.jpg",
"http://img0.imgtn.bdimg.com/it/u=2272739960,4287902102&fm=23&gp=0.jpg",
"http://img3.imgtn.bdimg.com/it/u=1078051055,1310741362&fm=23&gp=0.jpg"
};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
v = inflater.inflate(R.layout.fragment_banner, null);
initView(v);
return v;
}
private void initView(View v) {
fly_banner = (FlyBanner) v.findViewById(R.id.fly_banner);
List<String> imgesUrl = new ArrayList<>();
for (int i = 0; i < mImagesUrl.length; i++) {
imgesUrl.add(mImagesUrl[i]);
}
fly_banner.setImagesUrl(imgesUrl);
}
}
Banner的xml页面
<com.recker.flybanner.FlyBanner
android:id="@+id/fly_banner"
android:layout_width=“match_parent”
android:layout_height=“200dp”>
</com.recker.flybanner.FlyBanner>