ListView+PullToRefresh+Banner(postion=0)+TabLayout

主页

package com.bawei.listview_banner.Fragment;

import android.content.Context;
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.ImageView;
import android.widget.ListView;

import com.bawei.listview_banner.Adpter.Madapter;
import com.bawei.listview_banner.Bean.Bean;
import com.bawei.listview_banner.Bean.NewsBean;
import com.bawei.listview_banner.HttpUtil.HttpUtil;
import com.bawei.listview_banner.R;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
import com.youth.banner.Banner;
import com.youth.banner.loader.ImageLoaderInterface;

import java.util.ArrayList;
import java.util.List;


public class AFragment extends Fragment {

    private PullToRefreshListView plistview;
    private Madapter md;
    private String path = "http://api.expoon.com/AppNews/getNewsList/type/1/p/";
    private String Uri_pic="https://api.tianapi.com/wxnew/?key=c4aa776e0a51d57d6750511e2baa46b6&num=6&page=1";
    private int page=1;


    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = View.inflate(getActivity(), R.layout.fragment_a, null);
        plistview = view.findViewById(R.id.plistview);
        md = new Madapter(getActivity());
        plistview.setAdapter(md);

        initData();
        inPull();
        inBanner();
        return view;
    }



    private void initData() {
        if(page==1){
           inBanner();
            inData();
        }else {
            inData();
        }
    }

    private void inBanner() {

        HttpUtil.getRequest(Uri_pic, Bean.class, new HttpUtil.CallBack<Bean>() {
            @Override
        public void getdata(Bean bean) {
                List<Bean.NewslistBean> newslist = bean.getNewslist();
                md.addData(newslist);

        }
    });


    }

    private void inPull() {
        plistview.setMode(PullToRefreshBase.Mode.BOTH);
        plistview.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
                page=1;
                inData();
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
                page++;
                inData();
            }


        });

    }


    private void inData() {
        HttpUtil.getRequest(path+page, NewsBean.class, new HttpUtil.CallBack<NewsBean>() {
            @Override
            public void getdata(NewsBean newsBean) {
                md.setData(newsBean.getData());
                plistview.onRefreshComplete();
            }
        });
    }

}

适配器页面加上Banner,多条目展示,共三个条目

package com.bawei.listview_banner.Adpter;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.bawei.listview_banner.Bean.Bean;
import com.bawei.listview_banner.Bean.NewsBean;
import com.bawei.listview_banner.Fragment.AFragment;
import com.bawei.listview_banner.R;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.youth.banner.Banner;

import java.util.ArrayList;
import java.util.List;

public class Madapter extends BaseAdapter {

    private Context context;
    private List<NewsBean.DataBean> list;
    private List<Bean.NewslistBean> bannerlist;
    private int ITEM_COUNT = 3;
    private int TYPE_1 = 0;
    private int TYPE_2 = 1;

    private int TYPE_3 = 2;
    private final ImageLoader loader;
    private final DisplayImageOptions options;


    public Madapter(Context context) {
        this.context = context;
        list = new ArrayList<>();
        bannerlist = new ArrayList<>();
        ImageLoaderConfiguration configuration =ImageLoaderConfiguration.createDefault(context);
        loader = ImageLoader.getInstance();
        loader.init(configuration);
        options = new DisplayImageOptions.Builder()
                .cacheOnDisk(true)
                .cacheInMemory(true)
                .build();
    }

    public boolean hasBunner(){
        return bannerlist.size()>0;
    }

    @Override
    public int getViewTypeCount() {
        return ITEM_COUNT;
    }

    @Override
    public int getItemViewType(int position) {
        if(position==0) {
            return TYPE_3;
        }else{
            if (position % 2 == 0) {
                return TYPE_1;
            }else{
                return TYPE_2;
            }
        }
    }

    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public NewsBean.DataBean getItem(int position) {
        return list.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        if(getItemViewType(position)==TYPE_3){
            BViewHolder bh ;
            if(convertView==null){
                convertView = View.inflate(context, R.layout.activity_banner, null);
                bh = new BViewHolder();
                bh.img_banner = convertView.findViewById(R.id.img_banner);
                convertView.setTag(bh);
            }else{
                bh = (BViewHolder) convertView.getTag();
            }
            bh.img_banner.setImageLoader(new com.youth.banner.loader.ImageLoader() {
                @Override
                public void displayImage(Context context, Object path, ImageView imageView) {
                    Bean.NewslistBean bean = (Bean.NewslistBean) path;
                    //loader.displayImage(bean.getPicUrl(),imageView,options);
                    loader.displayImage(bean.getPicUrl(),imageView,options);
                }
            });
            bh.img_banner.setImages(bannerlist);
           // bh.img_banner.setBannerTitles(AFragment.getTitles(bean));
            bh.img_banner.start();


        }else{
            ViewHolder vh;
            if (convertView == null) {
                vh = new ViewHolder();
                convertView = View.inflate(context, getItemViewType(position) == TYPE_1 ?
                                R.layout.item : R.layout.item_image,
                        null);
                vh.title1 = convertView.findViewById(R.id.title1);
                vh.summery = convertView.findViewById(R.id.summery);
                vh.img = convertView.findViewById(R.id.img);
                convertView.setTag(vh);
            } else {
                vh = (ViewHolder) convertView.getTag();
            }
            vh.title1.setText(list.get(position).getNews_title());
            vh.summery.setText(list.get(position).getNews_summary());
            if (getItemViewType(position)==TYPE_2) {
                ImageLoader.getInstance().displayImage(list.get(position).getPic_url(), vh.img);
            }
        }
        return convertView;
    }

    public void setData(List<NewsBean.DataBean> data) {
        this.list = data;
        notifyDataSetChanged();
    }

    public void addData(List<Bean.NewslistBean> newslist) {
        this.bannerlist = newslist;
        notifyDataSetChanged();
    }


    class ViewHolder {
        ImageView img;
        TextView title1;
        TextView summery;
    }
    class BViewHolder{
        Banner img_banner;
    }
}

MainActivity基类提取出

package com.bawei.listview_banner;

import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import com.bawei.listview_banner.Adpter.FragmentPageAdpter;
import com.bawei.listview_banner.Fragment.AFragment;
import com.bawei.listview_banner.Fragment.BFragment;
import java.util.ArrayList;

public class MainActivity extends BaseActivity {


    private TabLayout tabs;
    private ViewPager viewPager;

    @Override
    protected void initData() {
        ArrayList<Fragment> list = new ArrayList<Fragment>();
        list.add(new AFragment());
        list.add(new BFragment());
        list.add(new BFragment());
        list.add(new BFragment());
        list.add(new BFragment());
        FragmentPagerAdapter fpa = new FragmentPageAdpter(getSupportFragmentManager(), MainActivity.this, list);
        viewPager.setAdapter(fpa);
        tabs.setupWithViewPager(viewPager);
    }

    @Override
    protected void initView() {
        viewPager = findViewById(R.id.viewpager);
        tabs = findViewById(R.id.tabs);
    }

    @Override
    protected int initContextview() {
        return R.layout.activity_main;
    }
}

Fragment 配置页面

package com.bawei.listview_banner.Adpter;

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.bawei.listview_banner.Fragment.AFragment;
import com.bawei.listview_banner.Fragment.BFragment;

import java.util.ArrayList;

public class FragmentPageAdpter extends FragmentPagerAdapter {

    private Context context;
    private ArrayList<Fragment> list;

    private String[] tabs = new String[]{
            "首页", "其他", "其他", "其他", "其他"
    };


    public FragmentPageAdpter(FragmentManager fm, Context context, ArrayList<Fragment> list) {
        super(fm);
        this.context = context;
        this.list = list;
    }

    @Override
    public Fragment getItem(int i) {
        switch (i) {
            case 0:
                return new AFragment();
            default:
                return new BFragment();

        }
    }

    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        return tabs[position];
    }

    @Override
    public int getCount() {
        return tabs.length;
    }
}

侧拉相关代码

private void initDrawer() {
    drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
    ActionBar actionBar = getSupportActionBar();
    actionBar.setDisplayHomeAsUpEnabled(true);
    mtoggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.open, R.string.close);
    mtoggle.syncState();
    drawerLayout.addDrawerListener(mtoggle);
}

public void showPage(int position) {
    viewpager.setCurrentItem(position);
    drawerLayout.closeDrawer(Gravity.START);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (mtoggle.onOptionsItemSelected(item)) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

猜你喜欢

转载自blog.csdn.net/wangshuai_97/article/details/84145359