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