MainActivity
public class MainActivity extends AppCompatActivity {
//RadioButton+Fragment实现页面主布局
private FrameLayout fl;
List<Fragment> fal = new ArrayList<>();
private FragmentManager manager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fl = findViewById(R.id.fl);
DrawerLayout drawer = findViewById(R.id.drawer);
RadioGroup rg = findViewById(R.id.rg);
initFragment();
manager = getSupportFragmentManager();
manager.beginTransaction().add(R.id.fl, fal.get(0)).commit();
rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) {
switch (i) {
case R.id.rb1:
manager.beginTransaction().replace(R.id.fl,fal.get(0)).commit();
break;
case R.id.rb2:
manager.beginTransaction().replace(R.id.fl,fal.get(1)).commit();
break;
case R.id.rb3:
manager.beginTransaction().replace(R.id.fl,fal.get(2)).commit();
break;
case R.id.rb4:
manager.beginTransaction().replace(R.id.fl,fal.get(3)).commit();
break;
}
}
});
drawer = (DrawerLayout) findViewById(R.id.drawer);
ImageView img = (ImageView) findViewById(R.id.img);
// getActivity(). getSupportFragmentManager().beginTransaction().replace(R.id.f1,mFragment).commit();
//关闭drawer
drawer.closeDrawer(img);
}
private void initFragment() {
F1 f1 = new F1();
F2 f2 = new F2();
F2 f3 = new F2();
F2 f4 = new F2();
fal.add(f1);
fal.add(f2);
fal.add(f3);
fal.add(f4);
}
}
F1 :
public class F1 extends Fragment {
//首页面使用tabLayout+viewPager实现。其它导航页面,内容自定义。
private TabLayout f1_tab;
private ViewPager f1_vp;
private List<Fragment> fal;
private List<String> list = new ArrayList<String>();
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.f1, container, false);
f1_tab = view.findViewById(R.id.f1_tab);
f1_vp = view.findViewById(R.id.f1_vp);
return view;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
initData();
MyFragPageAdapter adapter = new MyFragPageAdapter(getChildFragmentManager());
f1_vp.setAdapter(adapter);
// setupWithViewPager必须在ViewPager.setAdapter()之后调用
// 具体原因查看源码
f1_tab.setupWithViewPager(f1_vp);
}
private void initData() {
fal = new ArrayList<>();
F01 f01 = new F01();
F02 f02 = new F02();
F02 f03 = new F02();
F02 f04 = new F02();
fal.add(f01);
fal.add(f02);
fal.add(f03);
fal.add(f04);
}
class MyFragPageAdapter extends FragmentPagerAdapter {
private int pages = 4;
private Context context;
private String[] datas = {"推荐", "课程", "实战", "职业路径"};
//构造必须一个FragmentManager管理器,注意也是v4里的
public MyFragPageAdapter(FragmentManager fm) {
super(fm);
this.context = context;
}
@Override
public int getCount() {
return pages;
}
@Override
public Fragment getItem(int position) {
/* Bundle bundle = new Bundle();
if(list.get(position).equals("推荐")){
bundle.putString("name","xbsjxw");
}else if (list.get(position).equals("课程")){
bundle.putString("name","txs");
}else if (list.get(position).equals("实战")){
bundle.putString("name","toutiao");
}else if (list.get(position).equals("职业路径")){
bundle.putString("name","news/mobile/jbgg");
}
fal.get(position).setArguments(bundle);
*/
return fal.get(position);
}
@Override
public CharSequence getPageTitle(int position) {
return datas[position];
}
}
}
F2:
public class F2 extends Fragment{
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.f2, container, false);
return view;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
}
F01:
public class F01 extends Fragment{
//推荐页面中最上方实现viewPager的无限自动轮播,下方实现列表,可进行上拉加载,下拉刷新的效果。
//(要求使用pullToRefreshScrollView)图中红框部分的内容不要求实现。
List<Product.DataBean> mylist = new ArrayList<>();
private ViewPager f01_vp;
private PullToRefreshListView f01_pull;
int currentItem; //当前页
//int lastPosition = 0; //记录上次点的位置
//存放图片的集合
String [] imgs = {
"http://pic8.nipic.com/20100701/5290458_114840036316_2.jpg",
"http://pic2.nipic.com/20090424/1468853_230119053_2.jpg",
"http://img3.3lian.com/2013/s1/20/d/57.jpg",
"http://pic39.nipic.com/20140226/18071023_164300608000_2.jpg",
"http://a0.att.hudong.com/15/08/300218769736132194086202411_950.jpg"
};
private List<ImageView> imagesList;
private ScheduledExecutorService scheduledExecutorService;
private PullToRefreshListView f02_pull;
String baseUrl = "http://www.93.gov.cn/93app/data.do?channelId=0&startNum=";
//private ArrayAdapter<String> arrayAdapter;
private int page = 0;
private com.nostra13.universalimageloader.core.ImageLoader imageLoaderInstance;
private ListView lv;
//利用handler + 线程 实现无限轮播
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
//设置当前页面
f01_vp.setCurrentItem(currentItem);
}
};
private MyItemAdapter myadapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.f01, container, false);
f01_pull = view.findViewById(R.id.f01_pull);
f01_vp = view.findViewById(R.id.f01_vp);
return view;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
//页面中最上方实现viewPager的无限自动轮播
initData();
MyAdapter adapter = new MyAdapter();
f01_vp.setAdapter(adapter);
f01_vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
//当VP滑动 设置当前页
currentItem = position;
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
ListView lv = f01_pull.getRefreshableView();
imageLoaderInstance = com.nostra13.universalimageloader.core.ImageLoader.getInstance();
// arrayAdapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, list);
myadapter = new MyItemAdapter();
lv.setAdapter(myadapter);
f01_pull.setMode(PullToRefreshBase.Mode.BOTH);
f01_pull.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
mylist.clear();
getNetData(0);
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
getNetData(page++);
}
});
getNetData(0);//请求listview接口数据
}
private void getNetData(int page) {
new MAsyncTask().execute(baseUrl +page);
}
private void initData() {
imagesList = new ArrayList<>();
for (int i = 0; i<imgs.length; i++){
ImageView imageView = new ImageView(getActivity());
imageView.setMaxWidth(100);
//调用显示图片
ImageLoader instance = ImageLoader.getInstance();
instance.displayImage(imgs[i], imageView, ImageLoaderUtils_circle.getDisplayImageOption());
//imageView.setImageBitmap();
// imageView.setBackgroundResource(Integer.parseInt(imgs[i]));
imagesList.add(imageView);
}
}
class MyItemAdapter extends BaseAdapter{
@Override
public int getCount() {
Log.e("wzq", "getCount:" + mylist.size());
return mylist.size();
}
@Override
public Object getItem(int i) {
return mylist.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
View view1 = View.inflate(getActivity(), R.layout.item1, null);
TextView tv = view1.findViewById(R.id.item_tv);
ImageView img = view1.findViewById(R.id.item_img);
tv.setText(mylist.get(i).getSUBTITLE());
// iv.setImageBitmap("url");
//调用显示图片
ImageLoader instance = ImageLoader.getInstance();
instance.displayImage(mylist.get(i).getIMAGEURL(),img);
return view1;
}
}
private class MyAdapter extends PagerAdapter{
@Override
public int getCount() {
return imagesList.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
@Override
public void destroyItem(ViewGroup view, int position, Object object) {
view.removeView(imagesList.get(position));
}
@Override
public Object instantiateItem(ViewGroup view, int position) {
view.addView(imagesList.get(position));
return imagesList.get(position);
}
}
@Override
public void onStart() {
super.onStart();
//利用线程池执行动画轮播
scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
scheduledExecutorService.scheduleWithFixedDelay(
new ViewPageTask(),
2,
2,
TimeUnit.SECONDS);
}
//图片轮播任务
private class ViewPageTask implements Runnable {
@Override
public void run() {
//获取当前页面
currentItem = (currentItem +1)% imgs.length;
handler.sendEmptyMessage(0);
}
}
@Override
public void onStop() {
super.onStop();
if(scheduledExecutorService != null){
scheduledExecutorService.shutdown();
scheduledExecutorService = null;
}
}
class MAsyncTask extends AsyncTask<String ,Void, String>{
@Override
protected String doInBackground(String... strings) {
return NetUtil.getNetJson(strings[0]);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Gson gson = new Gson();
Product product = gson.fromJson(s, Product.class);
List<Product.DataBean> datas = product.getData();
mylist.addAll(datas);
myadapter.notifyDataSetChanged();
f01_pull.onRefreshComplete();
}
}
}
F02:
public class F02 extends Fragment{
private PullToRefreshGridView f02_pull;
ArrayList<String> list = new ArrayList<>();
String baseUrl = "http://www.93.gov.cn/93app/data.do?channelId=0&startNum=";
private ArrayAdapter<String> arrayAdapter;
private int page = 0;
String[] urls = {
"https://img-my.csdn.net/uploads/201407/26/1406383265_8550.jpg",
"https://img-my.csdn.net/uploads/201407/26/1406383265_8550.jpg",
"https://img-my.csdn.net/uploads/201407/26/1406383265_8550.jpg",
"https://img-my.csdn.net/uploads/201407/26/1406383265_8550.jpg",
"https://img-my.csdn.net/uploads/201407/26/1406383265_8550.jpg",
"https://img-my.csdn.net/uploads/201407/26/1406383265_8550.jpg",
};
private com.nostra13.universalimageloader.core.ImageLoader imageLoaderInstance;
private GridView glv;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.f02, container, false);
f02_pull = view.findViewById(R.id.f02_pull);
return view;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
glv = f02_pull.getRefreshableView();
imageLoaderInstance = com.nostra13.universalimageloader.core.ImageLoader.getInstance();
arrayAdapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, list);
glv.setAdapter(arrayAdapter);
f02_pull.setMode(PullToRefreshBase.Mode.BOTH);
f02_pull.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<GridView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<GridView> pullToRefreshBase) {
list.clear();
getNetData(0);
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<GridView> pullToRefreshBase) {
getNetData(page++);
}
});
getNetData(0);//请求listview接口数据
}
private void getNetData(int page) {
new MAsyncTask(list, arrayAdapter,f02_pull).execute(baseUrl +page);
}
}
MAsyncTask:
public class MAsyncTask extends AsyncTask<String, Void, String> {
private PullToRefreshGridView plv;
ArrayList<String> list;
private ArrayAdapter<String> arrayAdapter;
public MAsyncTask(ArrayList<String> list, ArrayAdapter<String> arrayAdapter, PullToRefreshGridView plv) {
this.list = list;
this.arrayAdapter = arrayAdapter;
this.plv = plv;
}
@Override
protected String doInBackground(String... strings) {
return NetUtil.getNetJson(strings[0]);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Gson gson = new Gson();
Product product = gson.fromJson(s, Product.class);
List<Product.DataBean> datas = product.getData();
ArrayList<String> tempList = new ArrayList<>();
for (int i = 0; i < datas.size(); i++) {
tempList.add(datas.get(i).getSUBTITLE());
}
list.addAll(tempList);
arrayAdapter.notifyDataSetChanged();
plv.onRefreshComplete();
}
}