fragmentthree.xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="#ff6699">
<android.support.design.widget.TabLayout
android:id="@+id/tablayout"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/jia"
app:layout_constraintTop_toTopOf="parent"
app:tabMaxWidth="0dp"
app:tabGravity="fill"
app:tabMode="fixed"
></android.support.design.widget.TabLayout>
<ImageButton
android:id="@+id/jia"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:src="@drawable/jia"
/>
<android.support.v4.view.ViewPager
android:id="@+id/buzhidao"
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/tablayout"
></android.support.v4.view.ViewPager>
</android.support.constraint.ConstraintLayout>
Fragmentthree:
public class Fragmentthree extends BaseFragment {
private TabLayout tab;
private ViewPager viewPager;
private ImageButton image;
private PindaoAdapter pindaoAdapter;
private List<ChannelBean> list;
@Override
protected 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("又一",false));
list.add(new ChannelBean("又二",false));
list.add(new ChannelBean("又三",false));
list.add(new ChannelBean("又四",false));
list.add(new ChannelBean("又五",false));
pindaoAdapter.setList(huoqu(list));
}
public List<ChannelBean> huoqu(List<ChannelBean> list){
List<ChannelBean> slist=new ArrayList<>();
for (ChannelBean cc:list){
if (cc.isSelect()){
slist.add(cc);
}
}
return slist;
}
@Override
protected void initView(View view) {
tab = view.findViewById(R.id.tablayout);
viewPager = view.findViewById(R.id.buzhidao);
image = view.findViewById(R.id.jia);
//设置适配器
pindaoAdapter = new PindaoAdapter(getChildFragmentManager());
viewPager.setAdapter(pindaoAdapter);
//通过tablayout设置viewpager
tab.setupWithViewPager(viewPager);
image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Gson gson = new Gson();
String jsonArray = gson.toJson(list);
Intent intent = new Intent(getActivity(), ChannelActivity.class);
intent.putExtra(RESULT_JSON_KEY, jsonArray);
startActivityForResult(intent, REQUEST_CODE);
}
});
}
@Override
protected int getLayoutResId() {
return R.layout.fragmentthree;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode==ChannelActivity.REQUEST_CODE&&resultCode==ChannelActivity.RESULT_CODE){
//获得栏目管理的字符串
String jsonstr=data.getStringExtra(ChannelActivity.RESULT_JSON_KEY);
//清空之前的栏目
tab.removeAllTabs();
Type type=new TypeToken<ArrayList<ChannelBean>>(){}.getType();
//进行解析
list=new Gson().fromJson(jsonstr,type);
//传给适配器
pindaoAdapter.setList(huoqu(list));
tab.setupWithViewPager(viewPager);
}
}
}
//适配器
PindaoAdapter:
public class PindaoAdapter extends FragmentPagerAdapter {
private List<ChannelBean> list=new ArrayList<>();
public PindaoAdapter(FragmentManager fm) {
super(fm);
}
public void setList(List<ChannelBean> list) {
this.list = list;
notifyDataSetChanged();
}
@Override
public Fragment getItem(int i) {
switch (i){
case 0:
return new Pinone();
case 1:
return new Pintwo();
default:
return new Pinthree();
}
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return list.get(position).getName();
}
@Override
public int getCount() {
return list.size();
}
}
banner:
pinone.xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="#cccfff"
android:layout_height="match_parent">
<com.youth.banner.Banner
android:id="@+id/bb"
android:layout_width="0dp"
android:layout_height="250dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
></com.youth.banner.Banner>
</android.support.constraint.ConstraintLayout>
Pinone:
public class Pinone extends BaseFragment {
private String lujing="https://api.tianapi.com/wxnew/?key=c4aa776e0a51d57d6750511e2baa46b6&num=6&page=1";
private Banner banner;
@Override
protected void initData() {
NetUtil.yibu(lujing, TuBean.class, new NetUtil.CallBack<TuBean>() {
@Override
public void getdata(TuBean o) {
//设置图片集合
banner.setImages(o.getNewslist());
banner.setBannerTitles(get(o.getNewslist()));
banner.start();
}
});
}
private List<String> get(List<TuBean.Newslist> newslist) {
List<String> list=new ArrayList<>();
for(TuBean.Newslist cc:newslist){
list.add(cc.getTitle());
}
return list;
}
@Override
protected void initView(View view) {
banner = view.findViewById(R.id.bb);
//设置banner样式
banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE);
banner.setImageLoader(new ImageLoaderInterface<ImageView>() {
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
TuBean.Newslist tu= (TuBean.Newslist) path;
com.nostra13.universalimageloader.core.ImageLoader.getInstance().displayImage(tu.getPicUrl(),imageView);
}
@Override
public ImageView createImageView(Context context) {
ImageView imageView=new ImageView(context);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
return imageView;
}
});
}
@Override
protected int getLayoutResId() {
return R.layout.pinone;
}
}
Bean类:
TuBean:
public class TuBean {
public List<Newslist> newslist;
public List<Newslist> getNewslist() {
return newslist;
}
public static class Newslist {
public String title;
public String picUrl;
public String getTitle() {
return title;
}
public String getPicUrl() {
return picUrl;
}
}
}
viewpager指示器
pintwo.xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="#fffccc"
android:layout_height="match_parent">
<android.support.v4.view.ViewPager
android:id="@+id/vv"
android:layout_width="0dp"
android:layout_height="250dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
></android.support.v4.view.ViewPager>
<LinearLayout
android:id="@+id/lin"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:orientation="horizontal"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="@id/vv"
android:padding="8dp"
></LinearLayout>
<TextView
android:id="@+id/tt"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/lin"
app:layout_constraintBottom_toBottomOf="@id/vv"
android:text="s"
/>
</android.support.constraint.ConstraintLayout>
适配器:
LunAdapter:
public class LunAdapter extends PagerAdapter {
private List<TuBean.Newslist> list;
private Context context;
public LunAdapter(Context context) {
this.context = context;
list=new ArrayList<>();
}
public void setList(List<TuBean.Newslist> list) {
this.list = list;
notifyDataSetChanged();
}
@Override
public int getCount() {
return ispanduan()?5000:list.size();
}
public boolean ispanduan(){
return list.size()>0;
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
return view==o;
}
public TuBean.Newslist getitem(int position){
return list.get(position%list.size());
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
ImageView imageView=new ImageView(context);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
container.addView(imageView);
ImageLoader.getInstance().displayImage(getitem(position).getPicUrl(),imageView);
return imageView;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((View)object);
}
}
Pintwo:
public class Pintwo extends BaseFragment {
private ViewPager viewPager;
private LinearLayout lin;
private TextView tt;
private String lujing="https://api.tianapi.com/wxnew/?key=c4aa776e0a51d57d6750511e2baa46b6&num=6&page=1";
private LunAdapter lunAdapter;
private int cc=-1;
@SuppressLint("HandlerLeak")
private android.os.Handler handler=new android.os.Handler(){
@Override
public void handleMessage(Message msg) {
viewPager.setCurrentItem(viewPager.getCurrentItem()+1);
sendEmptyMessageDelayed(0,2000);
}
};
@Override
protected void initData() {
NetUtil.yibu(lujing, TuBean.class, new NetUtil.CallBack<TuBean>() {
@Override
public void getdata(TuBean o) {
ii(o.getNewslist());
lunAdapter.setList(o.getNewslist());
int center=lunAdapter.getCount()/2;
center=center-center%o.getNewslist().size();
viewPager.setCurrentItem(center);
handler.removeMessages(0);
handler.sendEmptyMessageDelayed(0,2000);
}
});
}
private void ii(List<TuBean.Newslist> newslist) {
lin.removeAllViews();
for (int i=0;i<newslist.size();i++){
ImageView imageView=new ImageView(getActivity());
imageView.setBackgroundResource(R.drawable.select0);
LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT
);
int margin = (int) TypedValue.applyDimension(TypedValue.TYPE_ATTRIBUTE, 2, getResources().getDisplayMetrics());
params.leftMargin=margin;
params.rightMargin=margin;
lin.addView(imageView,params);
}
}
@Override
protected void initView(View view) {
viewPager = view.findViewById(R.id.vv);
lin = view.findViewById(R.id.lin);
tt = view.findViewById(R.id.tt);
lunAdapter = new LunAdapter(getActivity());
viewPager.setAdapter(lunAdapter);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i1) {
}
@Override
public void onPageSelected(int i) {
tt.setText(lunAdapter.getitem(i).getTitle());
lin.getChildAt(i%lin.getChildCount()).setSelected(true);
if (cc>=0){
lin.getChildAt(cc%lin.getChildCount()).setSelected(false);
}
cc=i;
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
}
@Override
protected int getLayoutResId() {
return R.layout.pintwo;
}
}
bean类:
TuBean:
public class TuBean {
public List<Newslist> newslist;
public List<Newslist> getNewslist() {
return newslist;
}
public static class Newslist {
public String title;
public String picUrl;
public String getTitle() {
return title;
}
public String getPicUrl() {
return picUrl;
}
}
}
xlistview:
pinthree.xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="#ff6699"
android:layout_height="match_parent">
<me.maxwin.view.XListView
android:id="@+id/xlistview"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
></me.maxwin.view.XListView>
</android.support.constraint.ConstraintLayout>
Pinthree:
public class Pinthree extends BaseFragment {
private int page;
private String lujing="http://172.17.8.100/movieApi/movie/v1/findReleaseMovieList?count=10&page=";
private XListView xListView;
private ZhengJiAdapter zhengJiAdapter;
@Override
protected void initData() {
NetUtil.yibu(lujing + page, ZhengJiBean.class, new NetUtil.CallBack<ZhengJiBean>() {
@Override
public void getdata(ZhengJiBean o) {
if (page==1){
zhengJiAdapter.setList(o.getResult());
}else{
zhengJiAdapter.addList(o.getResult());
}
page++;
xListView.stopLoadMore();
xListView.stopRefresh();
if (o.getResult().size()<10){
xListView.stopLoadMore();
}
}
});
}
@Override
protected void initView(View view) {
page=1;
xListView = view.findViewById(R.id.xlistview);
//支持刷新 加载
xListView.setPullLoadEnable(true);
xListView.setPullRefreshEnable(true);
zhengJiAdapter = new ZhengJiAdapter(getActivity());
xListView.setAdapter(zhengJiAdapter);
xListView.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() {//刷新
page=1;
initData();
}
@Override
public void onLoadMore() {//加载
initData();
}
});
}
@Override
protected int getLayoutResId() {
return R.layout.pinthree;
}
}
适配器:
ZhengJiAdapter:
public class ZhengJiAdapter extends BaseAdapter {
private List<ZhengJiBean.Res> list;
private Context context;
public ZhengJiAdapter(Context context) {
this.context = context;
list=new ArrayList<>();
}
//更新刷新
public void setList(List<ZhengJiBean.Res> slist) {
list.clear();
if (slist!=null){
list.addAll(slist);
}
notifyDataSetChanged();
}
//上拉加载
public void addList(List<ZhengJiBean.Res> slist) {
if (slist!=null){
list.addAll(slist);
}
notifyDataSetChanged();
}
@Override
public int getCount() {
return list.size();
}
@Override
public ZhengJiBean.Res getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView==null){
convertView=LayoutInflater.from(context).inflate(R.layout.zhengji,parent,false);
holder=new ViewHolder(convertView);
}else{
holder= (ViewHolder) convertView.getTag();
}
holder.getdata(getItem(position));
return convertView;
}
class ViewHolder{
private ImageView image;
private TextView title;
private TextView neirong;
public ViewHolder(View convertView) {
image=convertView.findViewById(R.id.im);
title=convertView.findViewById(R.id.title);
neirong=convertView.findViewById(R.id.neirong);
convertView.setTag(this);
}
public void getdata(ZhengJiBean.Res item) {
ImageLoader.getInstance().displayImage(item.getImageUrl(),image);
title.setText(item.getName());
neirong.setText(item.getSummary());
}
}
}
bean类:
ZhengJiBean:
public class ZhengJiBean {
public String status;
public String PAN="0000";
public List<Res> result;
public boolean ispanduan(){
return PAN.equals(status);
}
public String getStatus() {
return status;
}
public List<Res> getResult() {
return result;
}
public static class Res{
public String imageUrl;
public String name;
public String summary;
public Res() {
}
public Res(String imageUrl, String name, String summary) {
this.imageUrl = imageUrl;
this.name = name;
this.summary = summary;
}
public String getImageUrl() {
return imageUrl;
}
public String getName() {
return name;
}
public String getSummary() {
return summary;
}
}
}