首先需要导入以下包 compile 'com.android.support:design:26.0.0-alpha1' compile 'com.jakewharton:butterknife:7.0.1' compile 'org.xutils:xutils:3.5.0' compile 'com.google.code.gson:gson:2.8.1'
activity_main 使用线性布局 以下控件
<android.support.design.widget.TabLayout android:id="@+id/tablatout" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/colorPrimary" app:tabSelectedTextColor="@color/colorAccent" app:tabTextColor="@color/colorPrimaryDark"></android.support.design.widget.TabLayout> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent"></android.support.v4.view.ViewPager> xutils的类public class BaseApplication extends Application { @Override public void onCreate() { super.onCreate(); x.Ext.init(this); x.Ext.setDebug(BuildConfig.DEBUG); } }ContentFragment 类 相应的布局空白public class ContentFragment extends Fragment { private static String KEY = "arg"; private View view; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { view = inflater.inflate(R.layout.content_fragment, container, false); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); String url = (String) getArguments().get(KEY); Log.e("onActivityCreated", "onActivityCreated: " + url); } public static Fragment newIn(String url) { Fragment fragment = new ContentFragment(); Bundle bundle = new Bundle(); bundle.putString(KEY, url); fragment.setArguments(bundle); return fragment; } }
适配器类,单独写了一个public class MyAdapter extends FragmentPagerAdapter { private List<NewsBean.DataBean> list; private Context context; public MyAdapter(FragmentManager fm, List<NewsBean.DataBean> list, Context context) { super(fm); this.list = list; this.context = context; } @Override public Fragment getItem(int position) { return ContentFragment.newIn(list.get(position).getUrl()); } @Override public int getCount() { return list.size(); } @Override public CharSequence getPageTitle(int position) { return list.get(position).getName(); } }
主Activitypublic class MainActivity extends AppCompatActivity { @Bind(R.id.tablatout) TabLayout tablatout; @Bind(R.id.viewpager) ViewPager viewpager; private String url = "http://lf.snssdk.com/neihan/service/tabs/?essence=1&iid=3216590132&device_id=32613520945&ac=wifi&channel=360&aid=7&app_name=joke_essay&version_code=612&version_name=6.1.2&device_platform=android&ssmix=a&device_type=sansung&device_brand=xiaomi&os_api=28&os_version=6.10.1&uuid=326135942187625&openudid=3dg6s95rhg2a3dg5&manifest_version_code=612&resolution=1450*2800&dpi=620&update_version_code=6120"; private List<NewsBean.DataBean> list; private MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initData(); } private void initData() { list = new ArrayList<>(); adapter = new MyAdapter(getSupportFragmentManager(), list, this); viewpager.setAdapter(adapter); tablatout.setupWithViewPager(viewpager); x.http().get(new RequestParams(url), new Callback.CommonCallback<String>() { @Override public void onSuccess(String result) { Gson gson = new Gson(); NewsBean newsBean = gson.fromJson(result, NewsBean.class); list.addAll(newsBean.getData()); viewpager.post(new Runnable() { @Override public void run() { adapter.notifyDataSetChanged(); } }); } @Override public void onError(Throwable ex, boolean isOnCallback) { } @Override public void onCancelled(CancelledException cex) { } @Override public void onFinished() { } }); } private void initView() { ButterKnife.bind(this); } @Override protected void onDestroy() { super.onDestroy(); ButterKnife.unbind(this); } }
另一个需要的类就是Title的类了。