您的位置:首页 > 其它

下拉刷新和上拉加载(pulltorefreshlistview)

2017-11-16 15:10 232 查看
第一个类

import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
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.AbsListView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.example.myyuekaolianxi.MainActivity;
import com.example.myyuekaolianxi.R;
import com.example.myyuekaolianxi.baen.JAVABean;
import com.example.myyuekaolianxi.utils.Utils;
import com.google.gson.Gson;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;
import com.youth.banner.Banner;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ChildFrag1 extends Fragment {
String[] urls = {
"http://www.93.gov.cn/11002/upload/webcms/content/image/2017/10/26/09_24_30_877_91291_A62I6428_fb.jpg",
"http://www.93.gov.cn/11002/upload/webcms/content/image/2017/10/30/15_13_54_275_30248_A62I7285_fb.jpg",
"http://www.93.gov.cn/11002/upload/webcms/content/image/2017/10/28/16_50_42_835_31484_tp1.jpg",
"http://www.93.gov.cn/11002/upload/webcms/content/image/2017/10/27/17_56_50_751_85168_A62I6969_fb.jpg",
"http://www.93.gov.cn/11002/upload/webcms/content/image/2017/10/26/09_24_30_877_91291_A62I6428_fb.jpg",
"http://www.93.gov.cn/11002/upload/webcms/content/image/2017/10/25/16_31_17_049_81408_IMG_4907.jpg"};
String uriString = "http://www.93.gov.cn/93app/data.do?channelId=0&startNum=0";
private PullToRefreshListView pull;
private MyAdapter my;
List<JAVABean.DataBean> list = new ArrayList<>();
private ListView listView;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.child1, container, false);
//找到控件
pull = view.findViewById(R.id.child1_pull);
return view;
}

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
//获取网络状态
int netPyte = Utils.getNetPyte(getActivity());
if (netPyte != -1) {
//设置上拉加载和下拉刷新
pull.setMode(PullToRefreshBase.Mode.BOTH);
//获取PullToRefreshListView的适配器
listView = pull.getRefreshableView();
//添加适配器
my = new MyAdapter();
listView.setAdapter(my);
// 请求联网
init();
//PullToRefreshListView的监听事件
pull.setOnRefreshListener(new MyOnRefreshListener());
//调用添加头步布局的方法
tianBanner();
} else {
Toast.makeText(getActivity(), "无网络,请检查网络", Toast.LENGTH_LONG).show();
}

}

//请求网络
public void init() {
new MyAsync().execute(uriString);
}

//PullToRefreshListView的适配器类
private class MyAdapter extends BaseAdapter {
@Override
public int getCount() {
return list.size();
}

@Override
public Object getItem(int i) {
return list.get(i);
}

@Override
public long getItemId(int i) {
return i;
}
//返回视图
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
//优化
ViewHadler vh = null;
if (view == null) {
vh = new ViewHadler();
//把布局文件转成View
view = View.inflate(getActivity(), R.layout.pulllistview, null);
//找到控件
vh.im = view.findViewById(R.id.pull_im);
vh.tv = view.findViewById(R.id.pull_tv);
//把ViewHadler放到容器里
view.setTag(vh);
} else {
//从容器里取出
vh = (ViewHadler) view.getTag();
}
//赋值
vh.tv.setText(list.get(i).getTITLE());
//通过ImageLoader赋值
DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheInMemory(true)//让图片进行内存缓存
.cacheOnDisk(true)//让图片进行sdcard缓存
.displayer(new RoundedBitmapDisplayer(60))//是否设置为圆角,弧度为多少
.build();
//赋值
ImageLoader.getInstance().displayImage(list.get(i).getIMAGEURL(), vh.im, options);
return view;
}

}

//异步请求网络
private class MyAsync extends AsyncTask<String, Void, String> {
//子线程
@Override
protected String doInBackground(String... strings) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return Utils.NetJson(strings[0]);
}

//主线程
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
//获取Gson实例
Gson gson = new Gson();
//把解析的Json封装成JAVA对象
JAVABean javaBean = gson.fromJson(s, JAVABean.class);
//通过JAVA对象获取值
List<JAVABean.DataBean> data = javaBean.getData();
//把一个集合放到另一个集合中
list.addAll(data);
//刷新ListView界面
my.notifyDataSetChanged();
//停止刷新
pull.onRefreshComplete();
}
}

//优化类
public class ViewHadler {
ImageView im;
TextView tv;
}

//PullToRefreshListView的监听事件的类
private class MyOnRefreshListener implements PullToRefreshBase.OnRefreshListener2<ListView> {
//下拉刷新
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
//调用请求网络方法
init();
}

//上拉加载
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
//调用请求网络方法
init();
}
}

//给PullToRefreshListView添加头部的方法
public void tianBanner(){
//把布局文件转成View
View banner = View.inflate(getActivity(), R.layout.banner_1, null);
//找到控件
Banner ban=banner.findViewById(R.id.banner_ban);
//给Banner图片赋值
ban.setImageLoader(new MyBanner());
//设置图片地址的集合
ban = ban.setImages(Arrays.asList(urls));
//开启轮播
ban.start();
//添加头布局
listView.addHeaderView(banner);
}

// Banner图片赋值类
private class MyBanner extends com.youth.banner.loader.ImageLoader {
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
ImageLoader.getInstance().displayImage((String) path,imageView);
}
}
}


第二个类

import android.app.Application;
import android.os.Environment;
import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import java.io.File;
public class MyApp extends Application{
@Override
public void onCreate() {
super.onCreate();
File file=new File(Environment.getExternalStorageDirectory(),"images");
//初始化ImageLoader框架:链式开发思想
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this)
.memoryCacheExtraOptions(200, 200)//配置内存缓存图片的尺寸
.memoryCacheSize(2 * 1024 * 1024)//配置内存缓存的大小
.threadPoolSize(3)//配置加载图片的线程数
.threadPriority(1000)//配置线程的优先级
.diskCache(new UnlimitedDiskCache(file))//UnlimitedDiskCache 限制这个图片的缓存路径
.diskCacheFileCount(50)//配置sdcard缓存文件的数量
.diskCacheFileNameGenerator(new Md5FileNameGenerator())//MD5这种方式生成缓存文件的名字
.diskCacheSize(50 * 1024 * 1024)//在sdcard缓存50MB
.build();//完成

//获取ImageLoader的实例初始化配置参数
ImageLoader.getInstance().init(config);

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐