下拉刷新和上拉加载(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); } }
相关文章推荐
- Android 使用PullToRefresh实现下拉刷新和上拉加载(ExpandableListView)
- PullToRefreshListView实现下拉刷新和上拉加载更多
- PullToRefresh实现下拉刷新和上拉加载更多的ListView
- 采用github上的开源项目Android-PullToRefresh实现ListView的下拉刷新和上拉加载
- 使用SwipeRefreshLayout和自定义的PullToReFreshListView实现下拉刷新和上拉加载更多
- Listview(PullToRefresh ) 下拉刷新,上拉加载
- Android项目:使用pulltorefresh开源项目扩展为下拉刷新上拉加载更多的处理方法,监听listview滚动方向
- PullToRefreshListView简单实现下拉刷新、下拉加载
- Android实战——改造PullToRefresh下拉刷新和上拉加载
- PullPullToRefreshListView的下拉刷新,上拉加载
- PullToRefresh上拉加载下拉刷新GridView和ListView
- PullToRefresh引入依赖,布局,适配器ListView上拉加载下拉刷新
- 使用PullToRefresh实现下拉刷新和上拉加载
- PullToRefreshListView 下拉刷新上拉加载
- 简单实现标题栏悬浮状态,使用PullToRefreshListView上拉加载下拉刷新
- PullToRefreshListView的下拉刷新上拉加载更多问题
- 使用PullToRefresh实现下拉刷新和上拉加载
- Android项目:使用pulltorefresh开源项目扩展为下拉刷新上拉加载更多的处理方法,监听listview滚动方向 推荐
- PullToRefresh引入依赖,布局,适配器ListView上拉加载下拉刷新
- android中的几个GitHub的应用,一个半圆弧形进度条,一个侧拉SwipeMenuListView,下拉刷新上拉加载PullToRefresh