MainActivity:
package com.bwei.my1108;
import android.os.Bundle;
import android.support.annotation.IdRes;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AppCompatActivity;
import android.widget.ImageView;
import android.widget.RadioGroup;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
//定义变量
private List<Fragment> fragmentList = new ArrayList<Fragment>();
private RadioGroup rg;
private FragmentManager supportFragmentManager;
String TAG = "wzq";
private DrawerLayout drawerLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化组件
rg = (RadioGroup) findViewById(R.id.rg);
initFragment();
supportFragmentManager = getSupportFragmentManager();
supportFragmentManager.beginTransaction().add(R.id.fl, fragmentList.get(0)).commit();
rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) {
switch (i) {
case R.id.rb1:
supportFragmentManager.beginTransaction().replace(R.id.fl,fragmentList.get(0)).commit();
break;
case R.id.rb2:
supportFragmentManager.beginTransaction().replace(R.id.fl,fragmentList.get(1)).commit();
break;
case R.id.rb3:
supportFragmentManager.beginTransaction().replace(R.id.fl,fragmentList.get(2)).commit();
break;
case R.id.rb4:
supportFragmentManager.beginTransaction().replace(R.id.fl,fragmentList.get(3)).commit();
break;
}
}
});
drawerLayout = (DrawerLayout) findViewById(R.id.drawer);
ImageView img = (ImageView) findViewById(R.id.img);
// getActivity(). getSupportFragmentManager().beginTransaction().replace(R.id.f1,mFragment).commit();
//关闭drawer
drawerLayout.closeDrawer(img);
}
private void initFragment() {
F1 F1 = new F1();
F2 f2 = new F2();
F3 f3 = new F3();
F4 f4 = new F4();
fragmentList.add(F1);
fragmentList.add(f2);
fragmentList.add(f3);
fragmentList.add(f4);
}
}
F1:
package com.bwei.my1108;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.util.ArrayList;
/**
* author:Created by WangZhiQiang on 2017/11/9.
*/
public class F1 extends Fragment{
private ViewPager viewpager;
private ArrayList<Fragment> fragmentList = new ArrayList<Fragment>();
/* private FrameLayout frameLayout;
private ListView lv;*/
private ArrayList<String> lists;
//只写加载布局和找到控件
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.f1, container, false);
viewpager = view.findViewById(R.id.vp);
return view;
}
/**
* 写fragment的逻辑;
* @param view
* @param savedInstanceState
*/
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
initFragment();
//fragment中嵌套子fragment要用getChildFragmentManager()
//fragment中嵌套子fragment要用getChildFragmentManager()
//fragment中嵌套子fragment要用getChildFragmentManager()
viewpager.setAdapter(new MPagerAdapter(getChildFragmentManager()));
}
private void initFragment() {
F01 f01 = new F01();
F02 f02 = new F02();
fragmentList.add(f01);
fragmentList.add(f02);
}
private class MPagerAdapter extends FragmentPagerAdapter {
public MPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
@Override
public int getCount() {
return fragmentList.size();
}
}
}
F2:
package com.bwei.my1108;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
/**
* author:Created by WangZhiQiang on 2017/11/8.
*/
public class F02 extends Fragment {
private ViewPager viewPager;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.f02,container,false);
viewPager = view.findViewById(R.id.vp);
return view;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
}
F01:
package com.bwei.my1108;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.bwie.xlistviewlibrary.View.XListView;
import com.google.gson.Gson;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.ArrayList;
import java.util.List;
/**
* author:Created by WangZhiQiang on 2017/11/8.
*/
public class F01 extends Fragment implements XListView.IXListViewListener{
public String urlString = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
String urlBitmap = "https://img-my.csdn.net/uploads/201407/26/1406383265_8550.jpg";
private XListView xlv;
ArrayList<JavaBean.DataBean> dataBeanList = new ArrayList();
private MAdapter adapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.f01, container, false);
/** 下拉刷新,上拉加载 */
xlv = (XListView) view.findViewById(R.id.xlv);// 这个listview是在这个layout里面
return view;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
xlv.setPullLoadEnable(true);// 设置让它上拉,FALSE为不让上拉,便不加载更多数据
xlv.setXListViewListener(this);
//直接调用asyncTask类请求网络,把url传进去
//这行代码要在主线程调用;
initdata();
adapter = new MAdapter();
xlv.setAdapter(adapter);
}
private void initdata() {
new MAsyncTask().execute(urlString);
}
/**
* 泛型 第一个参数:传过来的url
* 第二个参数 :进度
* 第三个参数 :接口请求成功返回的东西(json,bitmap)
*/
private class MAsyncTask extends AsyncTask<String, Void, String> {
/**
* 这个方法在子线程,在这个方法里进行联网操作
*
* @param strings 可变参数,底层是数组,里面放的是传过来的参数;
* @return
*/
@Override
protected String doInBackground(String... strings) {
String urlTemp = strings[0];
//直接用工具类获取json
String netJson = NetUtil.getNetJson(urlTemp);
return netJson; //返回给(前台方法,主线程方法onPostExecute)
}
/**
* 这个方法在主线程, 直接更新ui即可;
*
* @param s s是doInBackground请求接口成功后返回的json
*/
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Log.e("wzq", "onPostExecute: " + s);
//解析s, 直接给控件展示;
Gson gson = new Gson();
JavaBean bean = gson.fromJson(s,JavaBean.class);
List<JavaBean.DataBean> temp = (List<JavaBean.DataBean>) bean.getData();
dataBeanList.addAll(temp);
adapter.notifyDataSetChanged();
}
}
private class MAdapter extends BaseAdapter {
@Override
public int getCount() {
Log.e("wzq", "getCount:" + dataBeanList.size());
return dataBeanList.size();
}
@Override
public Object getItem(int i) {
return dataBeanList.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.xlv_item, null);
TextView tv = view1.findViewById(R.id.tv);
ImageView img = view1.findViewById(R.id.img);
tv.setText(dataBeanList.get(i).getNews_title());
// iv.setImageBitmap("url");
//调用显示图片
ImageLoader instance = ImageLoader.getInstance();
instance.displayImage(urlBitmap,img);
return view1;
}
}
// 关闭
public void onLoad() {
xlv.stopRefresh();
xlv.stopLoadMore();
xlv.setRefreshTime("刚刚");
}
//刷新
@Override
public void onRefresh() {
dataBeanList.clear();
initdata();
onLoad();
}
//加载更多
@Override
public void onLoadMore() {
//1--保留之前集合中的数据
//2 把新数据添加到list中,更新适配器;
initdata();
onLoad();
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
getActivity().finish();
}
return false;
}
}