1.主Fragment里面嵌套
public class Ftwo extends Fragment {
private TabLayout tabLayout;
private ViewPager pager;
private TabBase tabBase;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.ftwo,container,false);
tabLayout = v.findViewById(R.id.tablayout);
pager = v.findViewById(R.id.item_pager);
return v;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
//嵌套fragment
pager.setAdapter(new TabBase(getChildFragmentManager()));
tabLayout.setupWithViewPager(pager);
}
}
2.布局
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.design.widget.TabLayout
android:id="@+id/tablayout"
android:layout_width="0dp"
android:layout_height="50dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
></android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager
android:id="@+id/item_pager"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent "
app:layout_constraintTop_toBottomOf="@id/tablayout"
></android.support.v4.view.ViewPager>
</android.support.constraint.ConstraintLayout>
3.嵌套页面
public class Stwo extends Fragment {
private PullToRefreshListView listView;
private TwoBase twoBase;
private String url;
private Dao dao;
private int page;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.sone,container,false);
listView = v.findViewById(R.id.pullToRefresh);
dao = new Dao();
page = 1;
return v;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
url = getArguments().getString("url");
twoBase = new TwoBase(getActivity());
listView.setAdapter(twoBase);
listView.setMode(PullToRefreshBase.Mode.BOTH);
listView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
page = 1;
initdata();
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
initdata();
}
});
initdata();
}
public void initdata(){
NetUtil.getJson(String.format(url,page), NrBean.class, new NetUtil.CallBack<NrBean>() {
@Override
public void success(NrBean o) {
//添加进去数据库
/*dao.addAll(o.getResult());*/
if(page == 1){
twoBase.setdata(o.getResult());
}else{
twoBase.addDatas(o.getResult());
}
page++;
listView.onRefreshComplete();
}
});
}
}
4.嵌套页面的xml布局
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<com.handmark.pulltorefresh.library.PullToRefreshListView
android:id="@+id/pullToRefresh"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
></com.handmark.pulltorefresh.library.PullToRefreshListView>
</android.support.constraint.ConstraintLayout>
5.主Fragment的适配
public class TabBase extends FragmentPagerAdapter {
private String[] item = new String[]{"正在播放","即将上映"};
private String[] urls = new String[]{
"http://172.17.8.100/movieApi/movie/v1/findHotMovieList?count=10&page=%d",
"http://172.17.8.100/movieApi/movie/v1/findReleaseMovieList?count=10&page=%d"
};
public TabBase(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int i) {
switch (i){
default:
Bundle bundle = new Bundle();
bundle.putString("url",urls[i]);
Stwo stwo = new Stwo();
stwo.setArguments(bundle);
return stwo;
}
}
@Override
public int getCount() {
return item.length;
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return item[position];
}
}
6.嵌套的适配器
public class TwoBase extends BaseAdapter {
private Context context;
private List<NrBean.ResultBean> list;
public TwoBase(Context context) {
this.context = context;
list= new ArrayList<>();
}
public void setdata(List<NrBean.ResultBean> lists){
list.clear();
list.addAll(lists);
notifyDataSetChanged();
}
public void addDatas(List<NrBean.ResultBean> lists) {
list.addAll(lists);
notifyDataSetChanged();
}
@Override
public int getCount() {
return list.size();
}
@Override
public NrBean.ResultBean getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView == null){
convertView = View.inflate(context,R.layout.items,null);
holder = new ViewHolder();
holder.img = convertView.findViewById(R.id.imageView2);
holder.t_name = convertView.findViewById(R.id.textView);
holder.t_ms = convertView.findViewById(R.id.textView2);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
holder.t_name.setText(getItem(position).getName());
holder.t_ms.setText(getItem(position).getSummary());
ImageLoader.getInstance().displayImage(getItem(position).getImageUrl(),holder.img);
return convertView;
}
class ViewHolder{
TextView t_name,t_ms;
ImageView img;
}
}