MainActivity :
private TabLayout tabLayout; private ViewPager viewPager; private List<String> list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tabLayout = (TabLayout) findViewById(R.id.tab_layout); viewPager = (ViewPager) findViewById(R.id.view_pager); tabLayout.setupWithViewPager(viewPager); /** * top(头条,默认),shehui(社会),guonei(国内),guoji(国际),yule(娱乐),tiyu(体育)junshi(军事) * ,keji(科技),caijing(财经),shishang(时尚) */ //tab的标题 list = new ArrayList<>(); list.add("头条"); list.add("社会"); list.add("国内"); list.add("国际"); list.add("娱乐"); list.add("体育"); list.add("军事"); list.add("科技"); list.add("财经"); list.add("时尚"); //Viewpager要展示页面...设置适配器 //初始化fragment页面适配器 =》new FragmentPagerAdapter //获取fragment 管理器=》getSupportFragmentManager //getpagetitle 获取当前页面显示的标题是tab对应的标题 position 当前页面的标志 //getItem 获取当前位置对应的fragment viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) { //得到当前页的标题,,,也就是设置当前页面显示的标题是tab对应的标题 @Override public CharSequence getPageTitle(int position) { return list.get(position); } @Override public Fragment getItem(int position) { //一般我们在这个位置对比一下标题是什么,,,然后返回对应的fragment //初始化fragment 对应position有多少,fragment有多少 NewsFragment newsFragment = new NewsFragment(); //初始化bundle (数据盒子,装数据元素) Bundle bundle = new Bundle(); //Fragment fragment = null; if (list.get(position).equals("头条")) { //fragment = new TouTiaoFragment(); bundle.putString("name", "top"); } else if (list.get(position).equals("社会")) { bundle.putString("name", "shehui"); } else if (list.get(position).equals("国内")) { bundle.putString("name", "guonei"); } else if (list.get(position).equals("国际")) { bundle.putString("name", "guoji"); } else if (list.get(position).equals("娱乐")) { bundle.putString("name", "yule"); } else if (list.get(position).equals("体育")) { bundle.putString("name", "tiyu"); } else if (list.get(position).equals("军事")) { bundle.putString("name", "junshi"); } else if (list.get(position).equals("科技")) { bundle.putString("name", "keji"); } else if (list.get(position).equals("财经")) { bundle.putString("name", "caijing"); } else if (list.get(position).equals("时尚")) { bundle.putString("name", "shishang"); } //给fragment 加bundle 数据 //activity与fragment 1.getset,2.接口回调,3.setArguments ,getAraguments newsFragment.setArguments(bundle); return newsFragment; } @Override public int getCount() { return list.size(); } }); }
Fragment布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <me.maxwin.view.XListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="match_parent"> </me.maxwin.view.XListView> </LinearLayout>
Framgnet:
public class NewsFragment extends Fragment implements XListView.IXListViewListener{ private XListView listView; MyAdapter myAdapter; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.news_layout, container, false); listView = (XListView) view.findViewById(R.id.list_view); listView.setXListViewListener(this); return view; } String string; List<DataDataBean.ResultBean.DataBean> list; @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Bundle bundle = getArguments(); string = bundle.getString("name", "top"); getDataFromNet(string); } private void getDataFromNet(final String string) { AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... voids) { String path = "http://v.juhe.cn/toutiao/index?type="+string+"&key=597b4f9dcb50e051fd725a9ec54d6653"; try { URL url = new URL(path); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); //设置 connection.setRequestMethod("GET"); connection.setReadTimeout(5000); connection.setConnectTimeout(5000); //获取 int responseCode = connection.getResponseCode(); if (responseCode == 200){ InputStream inputStream = connection.getInputStream(); String json = streamToString(inputStream,"utf-8"); return json; } } catch (Exception e) { e.printStackTrace(); } return ""; } @Override protected void onPostExecute(String json) { Gson gson = new Gson(); DataDataBean dataDataBean = gson.fromJson(json, DataDataBean.class); list = dataDataBean.getResult().getData(); myAdapter = new MyAdapter(getActivity(), list); listView.setAdapter(myAdapter); } }; asyncTask.execute(); } private String streamToString(InputStream inputStream,String charset) { try { InputStreamReader inputStreamReader = new InputStreamReader(inputStream,charset); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String s = null; StringBuilder builder = new StringBuilder(); while ((s = bufferedReader.readLine()) != null){ builder.append(s); } bufferedReader.close(); return builder.toString(); } catch (Exception e) { e.printStackTrace(); } return null; } public void onLoad() { listView.stopLoadMore(); listView.stopRefresh(); listView.setRefreshTime(""); } //下拉刷新 @Override public void onRefresh() { getDataFromNet(string); onLoad(); } //上拉加载 @Override public void onLoadMore() { AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... voids) { String path = "http://v.juhe.cn/toutiao/index?type="+string+"&key=597b4f9dcb50e051fd725a9ec54d6653"; try { URL url = new URL(path); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); //设置 connection.setRequestMethod("GET"); connection.setReadTimeout(5000); connection.setConnectTimeout(5000); //获取 int responseCode = connection.getResponseCode(); if (responseCode == 200){ InputStream inputStream = connection.getInputStream(); String json = streamToString(inputStream,"utf-8"); return json; } } catch (Exception e) { e.printStackTrace(); } return ""; } @Override protected void onPostExecute(String json) { Gson gson = new Gson(); DataDataBean dataDataBean = gson.fromJson(json, DataDataBean.class); List<DataDataBean.ResultBean.DataBean> list1 = dataDataBean.getResult().getData(); list.add((DataDataBean.ResultBean.DataBean) list1); myAdapter.notifyDataSetChanged();//刷新适配器 } }; asyncTask.execute(); }