main
package com.example.yuekaolianxi; import android.os.Bundle; import android.support.annotation.IdRes; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v7.app.AppCompatActivity; import android.widget.RadioGroup; import com.example.yuekaolianxi.fragment.MainFragment1; import com.example.yuekaolianxi.fragment.MainFragment2; import com.example.yuekaolianxi.fragment.MainFragment3; import com.example.yuekaolianxi.fragment.MainFragment4; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { //定义变量 private ArrayList<Fragment> fragmentList = new ArrayList<Fragment>(); private RadioGroup group; private FragmentManager supportFragmentManager; String TAG = "wzq"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化组件 group = (RadioGroup) findViewById(R.id.group); initFragment(); supportFragmentManager = getSupportFragmentManager(); supportFragmentManager.beginTransaction().add(R.id.fl_main, fragmentList.get(0)).commit(); group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) { switch (i) { case R.id.but1: supportFragmentManager.beginTransaction().replace(R.id.fl_main,fragmentList.get(0)).commit(); break; case R.id.but2: supportFragmentManager.beginTransaction().replace(R.id.fl_main,fragmentList.get(1)).commit(); break; case R.id.but3: supportFragmentManager.beginTransaction().replace(R.id.fl_main,fragmentList.get(2)).commit(); break; case R.id.but4: supportFragmentManager.beginTransaction().replace(R.id.fl_main,fragmentList.get(3)).commit(); break; } } }); } private void initFragment() { MainFragment1 mainFragment1 = new MainFragment1(); MainFragment2 mainFragment2 = new MainFragment2(); MainFragment3 mainFragment3 = new MainFragment3(); MainFragment4 mainFragment4 = new MainFragment4(); fragmentList.add(mainFragment1); fragmentList.add(mainFragment2); fragmentList.add(mainFragment3); fragmentList.add(mainFragment4); } }
fragment
MainFragment1
package com.example.yuekaoqianxi.fragment; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.design.widget.TabLayout; 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 com.example.yuekaoqianxi.R; import java.util.ArrayList; /** * Created by 张世祥 on 2017/11/23. */ public class MainFragment1 extends Fragment { private ViewPager viewpager; private ArrayList<Fragment> fragmentList = new ArrayList<Fragment>(); private ArrayList<String> list; private TabLayout tabLayout; //只写加载布局和找到控件 @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fargment_a, container, false); viewpager = view.findViewById(R.id.viewpager); tabLayout = (TabLayout) view.findViewById(R.id.mytab); //建立关联 tabLayout.setupWithViewPager(viewpager); intTabData(); return view; } private void intTabData() { list=new ArrayList<>(); list.add("新闻"); list.add("社会"); list.add("国际"); list.add("更多"); } /** * 写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())); //viewpager.setOffscreenPageLimit(fragmentList.size()); } @Override public void onResume() { super.onResume(); fragmentList.clear(); initFragment(); } private void initFragment() { ChildFragment1 childFragment1 = new ChildFragment1(); ChildFragment2 childFragment2 = new ChildFragment2(); ChildFragment3 childFragment3 = new ChildFragment3(); ChildFragment4 childFragment4 = new ChildFragment4(); fragmentList.add(childFragment1); fragmentList.add(childFragment2); fragmentList.add(childFragment3); fragmentList.add(childFragment4); } 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 list.size(); } @Nullable @Override public CharSequence getPageTitle(int position) { return list.get(position); } } }
MainFragment2
package com.example.yuekaolianxi.fragment; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; /** * author:Created by WangZhiQiang on 2017-11-03. */ public class MainFragment2 extends Fragment{ //只写加载布局和找到控件 @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { TextView textView = new TextView(getActivity()); textView.setText("我是第二个主fragment"); return textView; } /** * 写fragment的逻辑; * @param view * @param savedInstanceState */ @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); } }
ChildFragment1
package com.example.yuekaolianxi.fragment; import android.os.Bundle; import android.os.Handler; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; import com.example.yuekaolianxi.Adapter.MyAdapter; import com.example.yuekaolianxi.R; import com.example.yuekaolianxi.Utils.MyTask; import com.example.yuekaolianxi.bean.Bean; import com.google.gson.Gson; import com.handmark.pulltorefresh.library.ILoadingLayout; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshListView; import java.util.ArrayList; import java.util.List; /** * author:Created by WangZhiQiang on 2017-11-03. */ public class ChildFragment1 extends Fragment{ private View view; private List<Bean.DataBean>list=new ArrayList<>(); private MyAdapter myAdapter; private int startNum; private PullToRefreshListView scrollview; //只写加载布局和找到控件 @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { view=inflater.inflate(R.layout.fragment_b,null); scrollview=(PullToRefreshListView)view.findViewById(R.id.plv); return view; } @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); init(); initRefreshScrollView(); } private void initRefreshScrollView() { scrollview.setMode(PullToRefreshBase.Mode.BOTH); //设置头尾布局显示的文本 ILoadingLayout headerLables=scrollview.getLoadingLayoutProxy(true,false); headerLables.setPullLabel("下拉刷新"); headerLables.setRefreshingLabel("正在刷新"); headerLables.setReleaseLabel("松开刷新"); ILoadingLayout footerLables=scrollview.getLoadingLayoutProxy(false,true); footerLables.setPullLabel("上拉加载"); footerLables.setRefreshingLabel("正在加载"); footerLables.setReleaseLabel("松开加载"); //设置监听事件 scrollview.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) { //下拉刷新 addToTop(); closeRefresh(); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) { //上拉加载更多 addToBottom(); closeRefresh(); } }); } private void addToTop() { MyTask myTask = new MyTask(new MyTask.Icallbacks() { @Override public void updataUiByjson(String jsonstr) { Gson gson = new Gson(); Bean bean = gson.fromJson(jsonstr, Bean.class); list.addAll(bean.getData()); setAdapter(); } }); myTask.execute("http://api.expoon.com/AppNews/getNewsList/type/1/p/1"); } public void addToBottom(){ startNum=startNum+20; MyTask myTask = new MyTask(new MyTask.Icallbacks() { @Override public void updataUiByjson(String jsonstr) { Log.i("zzz",jsonstr); //创建Gson Gson gson = new Gson(); Bean bean = gson.fromJson(jsonstr, Bean.class); list.addAll(bean.getData()); // Log.i("aaa",list.toString()); setAdapter(); } }); myTask.execute("http://api.expoon.com/AppNews/getNewsList/type/1/p/"+startNum); } public void closeRefresh(){ new Handler().postDelayed(new Runnable() { @Override public void run() { scrollview.onRefreshComplete(); } },1000); } private void init() { MyTask myTask = new MyTask(new MyTask.Icallbacks() { @Override public void updataUiByjson(String jsonstr) { Gson gson = new Gson(); Bean bean = gson.fromJson(jsonstr, Bean.class); list.addAll(bean.getData()); setAdapter(); } }); myTask.execute("http://api.expoon.com/AppNews/getNewsList/type/1/p/1"); } public void setAdapter(){ if(myAdapter==null){ myAdapter = new MyAdapter(getActivity(),list); scrollview.setAdapter(myAdapter); }else{ myAdapter.notifyDataSetChanged(); } } }
ChildFragment2
package com.example.yuekaolianxi.fragment; 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.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.bawei.wzq.wzlibrary.utils.NetWordUtils; import com.bawei.wzq.wzlibrary.view.XListView; import com.example.yuekaolianxi.R; import com.example.yuekaolianxi.Utils.ImageloaderUtil; import com.example.yuekaolianxi.Utils.MyTask; import com.example.yuekaolianxi.bean.Result; import com.google.gson.Gson; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; import java.util.List; /** * author:Created by WangZhiQiang on 2017-11-03. */ public class ChildFragment2 extends Fragment implements XListView.IXListViewListener{ private View view; private XListView xlv; private List<Result.DataBean>lists=new ArrayList<>(); private DisplayImageOptions options; private MAdapter mAdapter; private int n=1; //只写加载布局和找到控件 @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { view=inflater.inflate(R.layout.fragment_c,null); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); xlv=(XListView)view.findViewById(R.id.xlv); xlv =(XListView) view.findViewById(R.id.xlv); xlv.setPullLoadEnable(true); xlv.setXListViewListener(this); options = new DisplayImageOptions.Builder() .cacheOnDisk(true) //sd卡 .cacheInMemory(true) .build(); mAdapter = new MAdapter(); xlv.setAdapter(mAdapter); new MAsyncTask().execute("http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page=1"); } class MAsyncTask extends AsyncTask<String,Void,String>{ private StringBuilder builder; @Override protected String doInBackground(String... strings) { try { //获取url URL url = new URL(strings[0]); //请求网络 HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); int code = urlConnection.getResponseCode(); //判断是否返回成功 if(code==200){ //获取网络信息 InputStream inputStream = urlConnection.getInputStream(); BufferedReader bf = new BufferedReader(new InputStreamReader(inputStream)); builder = new StringBuilder(); String s = ""; //拼接 while((s=bf.readLine())!=null){ builder.append(s); } } } catch (Exception e) { e.printStackTrace(); } return builder.toString(); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Log.e("Conan",s+"+-+-+-+-+-+-+-+-ss"); Gson gson = new Gson(); Result result = gson.fromJson(s, Result.class); List<Result.DataBean> results = result.getData(); lists.addAll(results); mAdapter.notifyDataSetChanged(); } } class MAdapter extends BaseAdapter{ @Override public int getCount() { return lists.size(); } @Override public Object getItem(int i) { return lists.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder vh; if(view==null){ vh = new ViewHolder(); view=View.inflate(getActivity(), R.layout.xlv_layout1,null); vh.tv=(TextView)view.findViewById(R.id.xlv_tv1); vh.img=(ImageView)view.findViewById(R.id.xlv_img); view.setTag(vh); }else { vh= (ViewHolder) view.getTag(); } vh.tv.setText(lists.get(i).getTitle()); ImageLoader.getInstance().displayImage(lists.get(i).getImg(), vh.img, ImageloaderUtil.getImageOptions()); return view; } class ViewHolder { private ImageView img; private TextView tv; } } public void onLoad(){ xlv.stopRefresh(); xlv.stopLoadMore(); xlv.setRefreshTime("刚刚"); } @Override public void onRefresh() { lists.clear(); new MAsyncTask().execute("http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page=1"); onLoad(); } @Override public void onLoadMore() { n++; new MAsyncTask().execute("http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page="+n); onLoad(); } }
ChildFragment3
package com.example.yuekaolianxi.fragment; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; /** * author:Created by WangZhiQiang on 2017-11-03. */ public class ChildFragment3 extends Fragment{ //只写加载布局和找到控件 @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { TextView textView = new TextView(getActivity()); textView.setText("我是ChildFragment2"); return textView; } /** * 写fragment的逻辑; * @param view * @param savedInstanceState */ @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); } }
Adapter
MyAdapter
package com.example.yuekaolianxi.Adapter; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.example.yuekaolianxi.R; import com.example.yuekaolianxi.Utils.ImageloaderUtil; import com.example.yuekaolianxi.bean.Bean; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.List; /** * Created by 张世祥 on 2017/11/21. */ public class MyAdapter extends BaseAdapter { private List<Bean.DataBean>list; private Context context; public MyAdapter(Context context, List<Bean.DataBean> list) { this.list = list; this.context = context; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return list.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder vh; if(view==null){ vh = new ViewHolder(); view=View.inflate(context, R.layout.item2,null); vh.tv=(TextView)view.findViewById(R.id.desc); vh.img=(ImageView)view.findViewById(R.id.tupian); view.setTag(vh); }else { vh= (ViewHolder) view.getTag(); } vh.tv.setText(list.get(i).getNews_title()); ImageLoader.getInstance().displayImage(list.get(i).getPic_url(), vh.img, ImageloaderUtil.getImageOptions()); return view; } class ViewHolder { private ImageView img; private TextView tv; } }