版权声明:橘子丶 https://blog.csdn.net/qq_43573190/article/details/85069474
一、非常重要的一步,导入依赖
(1)这是工作区间的build
(2)导入依赖
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<android.support.design.widget.TabLayout
android:id="@+id/tb"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
/>
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="+"
/>
</LinearLayout>
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
>
</android.support.v4.view.ViewPager>
</LinearLayout>
MainActivity.this
package com.example.kanghuwei.kanghuwei;
import android.content.Intent;
import android.print.PrinterId;
import android.support.annotation.Nullable;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import com.andy.library.ChannelActivity;
import com.andy.library.ChannelBean;
import com.example.kanghuwei.kanghuwei.adapter.MPagerAdapter;
import com.example.kanghuwei.kanghuwei.fragment.MFragment;
import com.example.kanghuwei.kanghuwei.fragment.MFragment0;
import com.example.kanghuwei.kanghuwei.fragment.MFragment1;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.ArrayList;
import static android.os.Build.VERSION_CODES.M;
public class MainActivity extends AppCompatActivity {
private TabLayout tb;
private ViewPager vp;
private Button btn;
private MPagerAdapter mPagerAdapter;
private ArrayList<Fragment> fragmentlist = new ArrayList<>();
private ArrayList<ChannelBean> channelBeanList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initVeiw();
initData();
}
private void initVeiw(){
tb = findViewById(R.id.tb);
vp = findViewById(R.id.vp);
btn = findViewById(R.id.btn);
mPagerAdapter = new MPagerAdapter(getSupportFragmentManager(),fragmentlist,channelBeanList,MainActivity.this);
vp.setAdapter(mPagerAdapter);
tb.setupWithViewPager(vp);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ChannelActivity.startChannelActivity(MainActivity.this,channelBeanList);
}
});
}
private void initData(){
channelBeanList.add(new ChannelBean("热点",true));
channelBeanList.add(new ChannelBean("北京",true));
channelBeanList.add(new ChannelBean("房价",true));
channelBeanList.add(new ChannelBean("旅游",false));
channelBeanList.add(new ChannelBean("条目1",false));
channelBeanList.add(new ChannelBean("条目2",false));
for (int i=0; i<channelBeanList.size(); i++){
if (channelBeanList.get(i).isSelect()){
tb.addTab(tb.newTab().setText(channelBeanList.get(i).getName()));
if (i==0){
fragmentlist.add(new MFragment0());
}else if (i==1){
fragmentlist.add(new MFragment1());
}else {
fragmentlist.add(new MFragment());
}
}
}
mPagerAdapter.notifyDataSetChanged();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
String jsonString = data.getStringExtra(ChannelActivity.RESULT_JSON_KEY);
Gson gson = new Gson();
final Type type = new TypeToken<ArrayList<ChannelBean>>() {}.getType();
channelBeanList = gson.fromJson(jsonString, type);
tb.removeAllTabs();
fragmentlist.clear();
for (int i=0; i<channelBeanList.size(); i++){
if (channelBeanList.get(i).isSelect()){
tb.addTab(tb.newTab().setText(channelBeanList.get(i).getName()));
if (i==0){
fragmentlist.add(new MFragment0());
}else if (i==1){
fragmentlist.add(new MFragment1());
}else {
fragmentlist.add(new MFragment());
}
}
}
mPagerAdapter.notifyDataSetChanged();
}
}
适配器
package com.example.kanghuwei.kanghuwei.adapter;
import android.content.Context;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import com.andy.library.ChannelBean;
import java.util.ArrayList;
public class MPagerAdapter extends FragmentPagerAdapter {
private ArrayList<Fragment>fragmentlist;
private ArrayList<ChannelBean>channelBeanlist;
private Context context;
public MPagerAdapter(FragmentManager fm, ArrayList<Fragment> fragmentlist, ArrayList<ChannelBean> channelBeanlist, Context context) {
super(fm);
this.fragmentlist = fragmentlist;
this.channelBeanlist = channelBeanlist;
this.context = context;
}
public MPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int i) {
return fragmentlist.get(i);
}
@Override
public int getCount() {
return fragmentlist.size();
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return channelBeanlist.get(position).getName();
}
}
MFragment0
ackage com.example.kanghuwei.kanghuwei.fragment;
import android.os.Bundle;
import android.support.annotation.NonNull;
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;
public class MFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
TextView textView = new TextView(getContext());
textView.setText("MFragment0---其他空白页面");
return textView;
}
}