activity_xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" > <android.support.design.widget.TabLayout android:id="@+id/tab" app:tabGravity="center" app:tabIndicatorColor="@color/colorAccent" app:tabMode="scrollable" app:tabSelectedTextColor="@color/colorPrimaryDark" app:tabTextColor="@color/colorPrimary" android:layout_width="match_parent" android:layout_height="40dp"> </android.support.design.widget.TabLayout> <android.support.v4.view.ViewPager android:layout_below="@+id/tab" android:id="@+id/view_pager" android:layout_width="match_parent" android:layout_height="match_parent"></android.support.v4.view.ViewPager> </RelativeLayout> fragment_layout
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="match_parent"></ListView> </LinearLayout>Mainactivity.java
package news1510a.bawei.com.a12_tablayout_viewpager; import android.os.Bundle; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import com.example.a12_tabayout_viewpager.NewsFragment; import com.example.a12_tabayout_viewpager.R; import java.util.ArrayList; import java.util.List; /** * 二.tablayout結合viewPager使用 * * 參考博客:http://www.jb51.net/article/120336.htm * * */ public class MainActivity extends AppCompatActivity { 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); viewPager = (ViewPager) findViewById(R.id.view_pager); list = new ArrayList<>(); list.add("頭條"); list.add("軍事"); list.add("娛樂"); list.add("新聞"); list.add("財經"); list.add("體育"); list.add("科技"); list.add("遊戲"); list.add("汽車"); list.add("環保"); list.add("視頻"); list.add("國內"); //1.給viewPager設置適配器 /** * 管理者對象有幾種???? * getSupportFragmentManager()...activity管理他身上的fragment的時候使用 * getChildFragmentManager()...fragment嵌套的時候,,,管理孩子需要使用這個管理者 * getFragmentManager()....孩子裏面還有fragment的話就使用這個 */ viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) { //2.重寫這個方法getPageTitle,,,得到當前頁面的標題 @Override public CharSequence getPageTitle(int position) { return list.get(position); } @Override public Fragment getItem(int position) { NewsFragment newsFragment = new NewsFragment(); //應該要做的是傳值,,,,去fragment裏面獲取,,,獲取到值之後,,,在進行url路徑的拼接 Bundle bundle = new Bundle(); bundle.putString("name","頭條"); newsFragment.setArguments(bundle); return newsFragment; } @Override public int getCount() { return list.size(); } }); //3.將tabLayout和viewPager關聯起來 tabLayout.setupWithViewPager(viewPager); } }Newsfragment.java
package news1510a.bawei.com.a12_tablayout_viewpager; 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.ListView; import com.example.a12_tabayout_viewpager.DataDataBean; import com.example.a12_tabayout_viewpager.MyAdapter; import com.example.a12_tabayout_viewpager.R; import com.google.gson.Gson; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; /** * @author Dash * @date 2017/10/12 * @description: */ public class NewsFragment extends Fragment { private ListView listView; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_layout,container,false); listView = view.findViewById(R.id.list_view); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); //獲取數據 String name = getArguments().getString("name", ""); //判斷 if (name.equals("頭條")){ name = "top"; }else if (name.equals("軍事")){ name = "junshi"; }else if (name.equals("社會")){ name = "shehui"; }else if (name.equals("財經")){ name = "caijing"; }else if (name.equals("國內")){ name = "guonei"; } getDataFromNet(name); } private void getDataFromNet(final String name) { AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... voids) { try { URL url = new URL("http://v.juhe.cn/toutiao/index?type="+name+"&key=c4479ad58f41e7f78a8fa073d0b1f1b5"); 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"); //打印字符串 Log.i("---",json); return json; } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { Gson gson = new Gson(); DataDataBean dataDataBean = gson.fromJson(s, DataDataBean.class); MyAdapter myAdapter = new MyAdapter(getActivity(), dataDataBean.getResult().getData()); 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; } }