PullToRefreshListView,上啦刷新和下拉
来源:互联网 发布:宝山区行知小学 编辑:程序博客网 时间:2024/06/08 16:16
package fragment.bwie.com.rikao16;import android.os.AsyncTask;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.widget.ListView;import com.google.gson.Gson;import com.handmark.pulltorefresh.library.ILoadingLayout;import com.handmark.pulltorefresh.library.PullToRefreshBase;import com.handmark.pulltorefresh.library.PullToRefreshListView;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;import fragment.bwie.com.rikao16.adapter.MyAdapter;import fragment.bwie.com.rikao16.bean.NewsListBean;public class MainActivity extends AppCompatActivity { private PullToRefreshListView view; private ILoadingLayout startLabels; private ILoadingLayout endLabels; private MyAdapter myAdapter; private List<NewsListBean.NewslistBean> list = new ArrayList<>();// private List<NewsListBean.NewslistBean> list; private int num = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); view = (PullToRefreshListView) findViewById(R.id.refresh_list_view); noData(); view.setMode(PullToRefreshBase.Mode.BOTH); startLabels = view.getLoadingLayoutProxy(true, false); startLabels.setPullLabel("下拉刷新"); startLabels.setRefreshingLabel("正在刷新..."); startLabels.setReleaseLabel("放开刷新"); endLabels = view.getLoadingLayoutProxy(false, true); endLabels.setPullLabel("上拉刷新"); endLabels.setRefreshingLabel("正在载入..."); endLabels.setReleaseLabel("放开刷新..."); view.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) { getdatas(); num++; } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) { noData(); } }); } private void getdatas() { AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... voids) { String path = "https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10&page="+ num ; try { URL url = new URL(path); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setReadTimeout(5000); urlConnection.setConnectTimeout(5000); int responseCode = urlConnection.getResponseCode(); if (responseCode == 200) { InputStream inputStream = urlConnection.getInputStream(); String json = streamTostring(inputStream, "utf-8"); return json; } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson = new Gson(); NewsListBean newsListBean = gson.fromJson(s, NewsListBean.class);// list = newsListBean.getNewslist(); list.addAll(0,newsListBean.getNewslist()); myAdapter = new MyAdapter(list, MainActivity.this); view.setAdapter(myAdapter); view.onRefreshComplete(); Date date = new Date(System.currentTimeMillis()); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm"); startLabels.setLastUpdatedLabel("上次刷新时间:"+simpleDateFormat.format(date)); } }; asyncTask.execute(); } private void noData() { AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... voids) { String path = "https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10&page=1" ; try { URL url = new URL(path); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setReadTimeout(5000); urlConnection.setConnectTimeout(5000); int responseCode = urlConnection.getResponseCode(); if (responseCode == 200) { InputStream inputStream = urlConnection.getInputStream(); String json = streamTostring(inputStream, "utf-8"); return json; } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson = new Gson(); NewsListBean newsListBean = gson.fromJson(s, NewsListBean.class);// list = newsListBean.getNewslist(); list.addAll(newsListBean.getNewslist()); myAdapter = new MyAdapter(list, MainActivity.this); view.setAdapter(myAdapter); view.onRefreshComplete(); } }; asyncTask.execute(); } private String streamTostring(InputStream inputStream, String s) { try { InputStreamReader inputStreamReader = new InputStreamReader(inputStream, s); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); StringBuilder builder = new StringBuilder(); String string = null; while ((string = bufferedReader.readLine()) != null) { builder.append(string); } bufferedReader.close(); return builder.toString(); } catch (Exception e) { e.printStackTrace(); } return null; }}
-------------------------------------------适配器
package fragment.bwie.com.rikao16.adapter;import android.content.Context;import android.graphics.Bitmap;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;import com.nostra13.universalimageloader.core.assist.ImageScaleType;import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;import java.util.List;import fragment.bwie.com.rikao16.R;import fragment.bwie.com.rikao16.bean.NewsListBean;/** * Created by CZ on 2017/9/16. */public class MyAdapter extends BaseAdapter { List<NewsListBean.NewslistBean> list; Context context; public MyAdapter(List<NewsListBean.NewslistBean> list, Context context) { this.list = list; this.context = context; ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(context)); } @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) { ViewHolder holder; if (view == null) { view = View.inflate(context, R.layout.list_item, null); holder = new ViewHolder(); holder.imageView = (ImageView) view.findViewById(R.id.image); holder.title = (TextView) view.findViewById(R.id.title); holder.ctime = (TextView) view.findViewById(R.id.ctime); view.setTag(holder); } else { holder = (ViewHolder) view.getTag(); } holder.title.setText(list.get(i).getTitle()); holder.ctime.setText(list.get(i).getCtime()); ImageLoader.getInstance().displayImage(list.get(i).getPicUrl(), holder.imageView, getoption()); return view; } private DisplayImageOptions getoption() { DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(R.mipmap.ic_launcher) //设置图片在下载期间显示的图片 .showImageForEmptyUri(R.mipmap.ic_launcher)//设置图的时片Uri为空或是错误候显示的图片 .showImageOnFail(R.mipmap.ic_launcher) //设置图片加载/解码过程中错误时候显示的图片 .cacheInMemory(true)//设置下载的图片是否缓存在内存中 .cacheOnDisk(true)//设置下载的图片是否缓存在SD卡中 .considerExifParams(true) //是否考虑JPEG图像EXIF参数(旋转,翻转) .imageScaleType(ImageScaleType.IN_SAMPLE_INT)//设置图片以如何的编码方式显示 .bitmapConfig(Bitmap.Config.RGB_565)//设置图片的解码类型 //.decodingOptions(BitmapFactory.Options decodingOptions)//设置图片的解码配置 .delayBeforeLoading(0)//int delayInMillis为你设置的下载前的延迟时间 //设置图片加入缓存前,对bitmap进行设置 //.preProcessor(BitmapProcessor preProcessor) .resetViewBeforeLoading(true)//设置图片在下载前是否重置,复位 .displayer(new RoundedBitmapDisplayer(20))//不推荐用!!!!是否设置为圆角,弧度为多少 .displayer(new FadeInBitmapDisplayer(100))//是否图片加载好后渐入的动画时间,可能会出现闪动 .build();//构建完成 return options; } public class ViewHolder { ImageView imageView; TextView title; TextView ctime; }}
----------------------------------------------布局
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="fragment.bwie.com.rikao16.MainActivity"> <com.handmark.pulltorefresh.library.PullToRefreshListView xmlns:ptr="http://schemas.android.com/apk/res-auto" android:layout_height="match_parent" android:layout_width="match_parent" android:id="@+id/refresh_list_view" ptr:ptrDrawable="@drawable/default_ptr_flip" ptr:ptrAnimationStyle="flip" ptr:ptrHeaderBackground="#383838" ptr:ptrHeaderTextColor="#FFFFFF" > </com.handmark.pulltorefresh.library.PullToRefreshListView></RelativeLayout>
阅读全文
0 0
- PullToRefreshListView,上啦刷新和下拉
- PullToRefreshListView上拉刷新和下拉刷新
- PullToRefreshListView下拉刷新和上拉加载更多使用方法
- PullToRefreshListView实现下拉刷新和上拉加载更多
- 下拉刷新和上拉加载(pulltorefreshlistview)
- XListView上啦刷新和下拉加载
- PullToRefreshListView下拉刷新与上拉加载
- PullToRefreshListView 下拉刷新上拉加载
- PullToRefreshListView上拉加载更多,下拉刷新
- PullToRefreshListView上拉加载下拉刷新
- PullToRefreshListView上拉刷新,下拉加载
- UITableView 下拉 上啦 刷新
- PullToRefreshView 上啦下拉刷新
- 上啦刷新,下拉加载
- 支持下拉刷新和上啦加载的SwipeRefreshLayout
- 使用SwipeRefreshLayout和自定义的PullToReFreshListView实现下拉刷新和上拉加载更多
- PullToRefreshListView下拉刷新
- PullToRefreshListView实现下拉刷新
- vrn:基于直接体积回归的单幅图像大姿态三维人脸重建
- 跳台阶问题--斐波那契数列
- ActiveMQ spring 包衝突問題
- 【Unity Shader】用shader控制背景的倾斜渐变
- Android Activity启动模式分析
- PullToRefreshListView,上啦刷新和下拉
- iOS开发学习之大牛们的博客
- Java对象校验框架之Oval
- Devops学习实践(六) Eclipse集成TestNg,mock编写单元测试
- HashMap实现原理分析
- 【MySQL】20个经典面试题,全部答对月薪10k+
- 四种聚类算法
- 学习总结之JavaWeb实现分页
- ICS Return 1 when x contains an odd number of 1s,0 otherwise(判断二进制表示中1的个数是否为奇数)