利用第三方框架需要导入的依赖
compile 'com.youth.banner:banner:1.4.10'
android
import android.view.View;
import android.widget.ListView;
import android.widget.Toast;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
import jx.com.moth1.R;
import jx.com.moth1.adapter.NewAdapter;
import jx.com.moth1.base.BaseFragment;
import jx.com.moth1.bean.NewBean;
import jx.com.moth1.netutil.NetUtil;
public class ToutiaoFragment extends BaseFragment {
private PullToRefreshListView listView;
//接口
private String uri = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
private final int COUNT = 20;
//定义的当前页
private int page;
private NewAdapter adapter;
@Override
protected void initData() {
page = 1;
//设置上拉下拉舒心
listView.setMode(PullToRefreshBase.Mode.BOTH);
//创建适配器
adapter = new NewAdapter(getActivity());
listView.setAdapter(adapter);
//设置监听
listView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
//当刷新时页数等于1
page = 1;
//调取方法
getinfo();
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
getinfo();
}
});
getinfo();
}
private void getinfo(){
//调取工具类里面的方法,解析出来数据
NetUtil.getInstance().getLoad(uri, NewBean.class, new NetUtil.CallBack<NewBean>() {
@Override
public void getLoad(NewBean o) {
//如果为空的话就吐司
if(o==null){
Toast.makeText(getActivity(),"请求失败",Toast.LENGTH_SHORT).show();
//上拉下拉完成
listView.onRefreshComplete();
return;
}
//如果是第一页的话就设置数据
if(page == 1){
adapter.setMdata(o.getData());
}else {
//否则就追加数据
adapter.addMdata(o.getData());
}
//拿到数据页数加加
page++;
listView.onRefreshComplete();
//如果长度等于COUNT的话停止上拉下拉(COUTNT 当前接口中数据的长度)
if(o.getData().size() <= COUNT){
listView.setMode(PullToRefreshBase.Mode.PULL_FROM_START);
}else {
//否则就开启上拉下拉刷新
listView.setMode(PullToRefreshBase.Mode.BOTH);
}
}
});
}
//
@Override
protected void initView(View view) {
listView =view.findViewById(R.id.pullListview);
}
@Override
protected int getViewLayout() {
return R.layout.toutiaofrag;
}
}
Adapter
package jx.com.moth1.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.youth.banner.Banner;
import com.youth.banner.BannerConfig;
import com.youth.banner.loader.ImageLoader;
import com.youth.banner.loader.ImageLoaderInterface;
import java.util.ArrayList;
import java.util.List;
import jx.com.moth1.R;
import jx.com.moth1.bean.NewBean;
public class NewAdapter extends BaseAdapter {
private List<NewBean.Data> mdata;
private Context context;
public NewAdapter(Context context) {
this.context = context;
//声明
mdata = new ArrayList<>();
}
public void setMdata(List<NewBean.Data> data) {
mdata.clear();
if(data != null){
mdata.addAll(data);
}
notifyDataSetChanged();
}
public void addMdata(List<NewBean.Data> data) {
if(data != null){
mdata.addAll(data);
}
notifyDataSetChanged();
}
@Override
public int getCount() {
return mdata.size()+1;
}
//多条目
private final int COUNT = 2;
private final int BANNER = 1;
private final int New = 0;
@Override
public int getViewTypeCount() {
return COUNT;
}
@Override
public int getItemViewType(int position) {
return position == 0?BANNER:New;
}
@Override
public NewBean.Data getItem(int position) {
return mdata.get(position-1);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//有Bannar的时候先加载Banner布局
if(getItemViewType(position)==BANNER){
ViewHolderBanner holderBanner;
if(convertView == null){
//获取布局
convertView = LayoutInflater.from(context).inflate(R.layout.banner_item,parent,false);
holderBanner = new ViewHolderBanner(convertView);
}else {
holderBanner = (ViewHolderBanner) convertView.getTag();
}
holderBanner.binddata(mdata,context);
}else {
ViewHolderNew holderNew;
if(convertView ==null){
convertView = LayoutInflater.from(context).inflate(R.layout.new_item,parent,false);
holderNew = new ViewHolderNew(convertView);
}else {
holderNew = (ViewHolderNew) convertView.getTag();
}
holderNew.binddata(getItem(position));
}
return convertView;
}
class ViewHolderBanner{
Banner banner;
//获取id并且绑定
private ViewHolderBanner(View con){
banner = con.findViewById(R.id.banner);
con.setTag(this);
}
//设置Banner
private void binddata(List<NewBean.Data> list,Context context){
//设置样式
banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE);
//设置图片
banner.setImageLoader(new ImageLoaderInterface<ImageView>() {
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
//把当前path用类存起来
NewBean.Data bean = (NewBean.Data) path;
//设置图片ImageLoader 路径为bean里的图片路径
com.nostra13.universalimageloader.core.ImageLoader.getInstance().displayImage(bean.getPic_url(),imageView);
}
@Override
public ImageView createImageView(Context context) {
ImageView imageView = new ImageView(context);
//样式
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
return imageView;
}
});
getinfo(list);
}
//设置数据
private void getinfo(List<NewBean.Data> list) {
banner.setImages(list);
banner.setBannerTitles(getTitle(list));
//轮播图间隔时间
banner.setDelayTime(2000);
//开始轮播
banner.start();
}
//用List 存放遍历出的结果,设置给setBannerTitles
private List<String> getTitle(List<NewBean.Data> list) {
List<String> list1 = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
list1.add(list.get(i).getNews_title());
}
return list1;
}
}
class ViewHolderNew{
TextView text1,text2;
ImageView iamge;
//获取id并且绑定
private ViewHolderNew(View con){
text1 = con.findViewById(R.id.text1_new);
text2 = con.findViewById(R.id.text2_new);
iamge = con.findViewById(R.id.image_new);
con.setTag(this);
}
//设置值
private void binddata(NewBean.Data list){
text1.setText(list.getNews_title());
text2.setText(list.getNews_summary());
com.nostra13.universalimageloader.core.ImageLoader.getInstance().displayImage(list.getPic_url(),iamge);
}
}
}