Tablayout+viewpager

来源:互联网 发布:mac下好用的命令行终端 编辑:程序博客网 时间:2024/06/03 01:56
//先导入design的包24的然后写布局//导入颜色的values文件<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/activity_main"android:layout_width="match_parent"android:layout_height="match_parent"//这行记着写xmlns:app="http://schemas.android.com/apk/res-auto"android:orientation="vertical"tools:context="com.bawei.lian05.MainActivity">//这是导航的滑动布局<android.support.design.widget.TabLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/tabs"app:tabIndicatorColor="@color/red"app:tabMode="scrollable"app:tabSelectedTextColor="@color/red"app:tabTextColor="@color/black"/>//这是放fragment的viewpager布局<android.support.v4.view.ViewPagerandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/vp"></android.support.v4.view.ViewPager></LinearLayout>//主函数public class MainActivity extends AppCompatActivity {//上面的滑动布局private TabLayout tabLayout;//下面的viewpagerprivate ViewPager vp;//存放上面数据的数组private String[] channels={"标题"};//存放接口的数组private String[] urls={"接口"};private LayoutInflater in;//存放fragment的集合private List<ChannelFragment> nview=new ArrayList();//创建的fragment对象private ChannelFragment fragment;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);vp= (ViewPager) findViewById(R.id.vp);tabLayout = (TabLayout) findViewById(R.id.tabs);in = LayoutInflater.from(this);//根据标题数量创建fragmentfor(int i=0;i<channels.length;i++){//循环创建fragmentfragment = new ChannelFragment();Bundle b=new Bundle();//将接口发送到fragmentb.putString("url",urls[i]);fragment.setArguments(b);//将创建的fragment添加到集合里nview.add(fragment);//设置导航滑动布局的文字tabLayout.addTab(tabLayout.newTab().setText(channels[i]));}//写FragmentPagerAdapter适配器,将fragment与viewpager联系起来FragmentManager fm = getSupportFragmentManager();MyFragmentPagerAdapter adapter = new MyFragmentPagerAdapter(fm, nview);vp.setAdapter(adapter);//将viewpager和滑动布局联系起来tabLayout.setupWithViewPager(vp);tabLayout.setTabsFromPagerAdapter(adapter);}//内部适配器class MyFragmentPagerAdapter extends FragmentPagerAdapter{private List nview;public MyFragmentPagerAdapter(FragmentManager fm,List nview) {super(fm);this.nview=nview;}@Overridepublic Fragment getItem(int position) {return nview.get(position);}@Overridepublic int getCount() {return nview.size();}@Overridepublic CharSequence getPageTitle(int position) {return channels[position];}}//然后写fragmentpublic class ChannelFragment extends Fragment{private String news_url;private ListView lv;@Overridepublic void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);Bundle bundle = getArguments();//接收传来的urlnews_url= (String) bundle.get("url");}@Nullable@Overridepublic View onCreateView(final LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {View view = inflater.inflate(R.layout.item, null);lv = (ListView) view.findViewById(R.id.lv);new AsyncTask(){@Overrideprotected String doInBackground(String... params) {}@Overrideprotected void onPostExecute(String s) {super.onPostExecute(s);//解析并展示到listview}}.execute(news_url);return view;}
原创粉丝点击