此文章的基础写法与《draggrid 频道管理》文章相同
写一些改动的地方
fragmentone,two,three,four为Fragment
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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"
tools:context=".MainActivity">
<android.support.design.widget.TabLayout
android:id="@+id/tab"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintRight_toLeftOf="@id/jia"
></android.support.design.widget.TabLayout>
<ImageButton
android:id="@+id/jia"
android:layout_width="wrap_content"
android:layout_height="0dp"
app:layout_constraintRight_toRightOf="parent"
android:src="@drawable/jia"
/>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/tab"
></android.support.v4.view.ViewPager>
</android.support.constraint.ConstraintLayout>
适配器:
FragmentPagerAdapter:
MyPager:
package guopuran.bwie.com.space08;
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;
import java.util.List;
public class MyPager extends FragmentPagerAdapter {
private List<ChannelBean> list=new ArrayList<>();
public void setList(List<ChannelBean> list) {
this.list = list;
notifyDataSetChanged();
}
public MyPager(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int i) {
switch (i){
case 0:
return new Fragmentone();
case 1:
return new Fragmenttwo();
case 2:
return new Fragmentthree();
default:
return new Fragmentfour();
}
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return list.get(position).getName();
}
@Override
public int getCount() {
return list.size();
}
}
Activity:
改动的地方:
给tablayout写标题时改成自动添加
给适配器传list集合时提供一个方法只给selecked为true的数据:
public class MainActivity extends AppCompatActivity {
private TabLayout tab;
private ImageButton jia;
private List<ChannelBean> list;
private String jsonStr="";
private ViewPager viewPager;
private MyPager myPager;
private int count=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取资源ID
tab = findViewById(R.id.tab);
jia = findViewById(R.id.jia);
viewPager = findViewById(R.id.viewpager);
//设置适配器
myPager = new MyPager(getSupportFragmentManager());
viewPager.setAdapter(myPager);
initData();
}
private void initData() {
list=new ArrayList<>();
list.add(new ChannelBean("热点", true));
list.add(new ChannelBean("军事", true));
list.add(new ChannelBean("八卦", true));
list.add(new ChannelBean("游戏", true));
list.add(new ChannelBean("宠物", true));
list.add(new ChannelBean("汽车", true));
list.add(new ChannelBean("热卖", true));
list.add(new ChannelBean("外卖", true));
list.add(new ChannelBean("条目1", true));
list.add(new ChannelBean("条目2", true));
list.add(new ChannelBean("条目3", false));
list.add(new ChannelBean("条目4", false));
list.add(new ChannelBean("条目5", false));
list.add(new ChannelBean("条目6", false));
list.add(new ChannelBean("条目7", false));
list.add(new ChannelBean("条目8", false));
myPager.setList(findSelectedResult(list));
tab.setupWithViewPager(viewPager);
jia.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ChannelActivity.startChannelActivity(MainActivity.this,list);
}
});
}
//获得selecked为true的数据
private List<ChannelBean> findSelectedResult(List<ChannelBean> datas) {
List<ChannelBean> cc=new ArrayList<>();
for (int i=0;i<datas.size();i++){
if (datas.get(i).isSelect()){
cc.add(datas.get(i));
}
}
return cc;
}
protected void onActivityResult(int requestCode, int resultCode,Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode==ChannelActivity.REQUEST_CODE&&resultCode==ChannelActivity.RESULT_CODE){
//获得栏目管理的字符串
jsonStr=data.getStringExtra(ChannelActivity.RESULT_JSON_KEY);
// 把新选择的栏目结果更新到TabLayout上
//清空之前的栏目
tab.removeAllTabs();
Type type=new TypeToken<ArrayList<ChannelBean>>(){}.getType();
//进行json解析
list = new Gson().fromJson(jsonStr, type);
//传给适配器
myPager.setList(findSelectedResult(list));
tab.setupWithViewPager(viewPager);
}
}
}