ViewpagerFragmentAdapter.java
2.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
package com.cnlive.goldenline.ui.adapter;
import android.os.Parcelable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.view.ViewGroup;
import com.bumptech.glide.Glide;
import com.cnlive.goldenline.ui.model.FragmentHolder;
import com.cnlive.goldenline.util.LogUtils;
import java.util.List;
/**
* Description:ViewPager 嵌套 Fragment 适配器
* Created on 2017/3/1
* Author : 萧
*/
public class ViewpagerFragmentAdapter extends FragmentStatePagerAdapter {
private static final String TAG = "ViewpagerFragmentAdapter";
private List<Fragment> frList;
private List<String> titles;
private List<FragmentHolder> holders;
// public ViewpagerFragmentAdapter(FragmentManager fm) {
// super(fm);
// }
public ViewpagerFragmentAdapter(FragmentManager fm, List<FragmentHolder> holders) {
super(fm);
this.holders = holders;
}
public void setHolders(List<FragmentHolder> holders) {
this.holders = holders;
}
public void setFrList(List<Fragment> frList) {
this.frList = frList;
}
public void setTitles(List<String> titles) {
this.titles = titles;
}
@Override
public Fragment getItem(int position) {
return holders == null ? null : holders.get(position).getFragment();
}
@Override
public int getCount() {
// int count1 = frList == null ? 0 : frList.size();
// int count2 = titles == null ? 0 : titles.size();
// return Math.min(count1, count2);
return holders == null ? 0 : holders.size();
}
@Override
public CharSequence getPageTitle(int position) {
// return titles == null ? "" : titles.get(position);
return holders == null ? "" : holders.get(position).getTitle();
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
LogUtils.LOGE(TAG + " instantiateItem position = " + position);
return super.instantiateItem(container, position);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
LogUtils.LOGE(TAG + " destroyItem position = " + position);
try {
Glide.clear(container);
} catch (Exception e) {
e.printStackTrace();
}
super.destroyItem(container, position, object);
}
@Override
public Parcelable saveState() {
LogUtils.LOGE(TAG + " saveState ");
return super.saveState();
}
@Override
public void restoreState(Parcelable state, ClassLoader loader) {
LogUtils.LOGE(TAG + " restoreState state = " + state);
super.restoreState(state, loader);
}
}