主页
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);
}