PullToRefresh 上拉刷新,下拉加载网络数据 ListView
来源:互联网 发布:网络直播一群无聊人 编辑:程序博客网 时间:2024/05/02 06:13
package com.example.a1019;import android.graphics.Bitmap;import android.os.AsyncTask;import android.os.Bundle;import android.os.Handler;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;import com.google.gson.Gson;import com.handmark.pulltorefresh.library.ILoadingLayout;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 java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import java.util.List;public class MainActivity extends AppCompatActivity { private PullToRefreshListView pull_lv; private Handler handler = new Handler(); private String str = ""; private List<Result.NewslistBean> newslist; private MyAdapter myAdapter; private int pageIndex = 1; private DisplayImageOptions options; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); pull_lv = (PullToRefreshListView) findViewById(R.id.pull_lv); //进行内存缓存//进行sd卡缓存/*.showImageOnLoading(R.drawable.ic_stub) // 设置正在下载中的图片.showImageForEmptyUri(R.drawable.ic_empty) //没有请求地址时.showImageOnFail(R.drawable.ic_error)//下载错误时*///设置图片质量 new MyAsync().execute("https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10&page="+pageIndex); options = new DisplayImageOptions.Builder() .cacheInMemory(true)//进行内存缓存 .cacheOnDisk(true)//进行sd卡缓存 /*.showImageOnLoading(R.drawable.ic_stub) // 设置正在下载中的图片 .showImageForEmptyUri(R.drawable.ic_empty) //没有请求地址时 .showImageOnFail(R.drawable.ic_error)//下载错误时*/ .bitmapConfig(Bitmap.Config.RGB_565)//设置图片质量 .build(); //设置监听 initLV(); } class MyAsync extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... params) { //创建Url对象 try { URL url = new URL(params[0]); //打开连接 HttpURLConnection connection = (HttpURLConnection) url.openConnection(); //设置 connection.setRequestMethod("GET"); connection.setReadTimeout(3000); connection.setConnectTimeout(3000); int code = connection.getResponseCode(); if (code == 200) { InputStream inputStream = connection.getInputStream(); str = streamToString(inputStream); } } catch (Exception e) { e.printStackTrace(); } return str; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Log.e("ZZZ",s+"11111111111111111"); //解析数据 Gson gson = new Gson(); Result result = gson.fromJson(str, Result.class); newslist = result.getNewslist(); setAdapter(); } } public String streamToString(InputStream is) { StringBuilder sb = new StringBuilder(); String con; BufferedReader br = new BufferedReader(new InputStreamReader(is)); try { while ((con = br.readLine()) != null) { sb.append(con); } } catch (IOException e) {// TODO Auto-generated catch block e.printStackTrace(); } return sb.toString(); } private void initLV() { //设置支持上拉下拉刷新 pull_lv.setMode(PullToRefreshBase.Mode.BOTH); //设置状态 ILoadingLayout startLabels = pull_lv.getLoadingLayoutProxy(true, false); startLabels.setPullLabel("下拉刷新"); startLabels.setRefreshingLabel("正在拉"); startLabels.setReleaseLabel("放开刷新"); ILoadingLayout endLabels = pull_lv.getLoadingLayoutProxy(false, true); endLabels.setPullLabel("上拉刷新"); endLabels.setRefreshingLabel("正在载入..."); endLabels.setReleaseLabel("放开刷新..."); //设置监听事件 pull_lv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) { //下拉刷新的回调方法 //下拉刷新的数据,显示在listview列表的最上面 addtoTop(); // pageIndex=1; handler.postDelayed(new Runnable() { @Override public void run() { //刷新完成,必须在异步下完成 pull_lv.onRefreshComplete(); //刷新适配器 setAdapter(); } }, 1000); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) { //上拉加载的回调 //加载更多的数据,添加到集合列表的最后面 addtoBottom(); pageIndex++; handler.postDelayed(new Runnable() { @Override public void run() { //刷新完成,必须在异步下完成 pull_lv.onRefreshComplete(); //刷新适配器 setAdapter(); } }, 1000); } }); } private void addtoBottom() { pageIndex++; new MyAsync().execute("https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10&page="+pageIndex); } private void addtoTop() { pageIndex=1; new MyAsync().execute("https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10&page="+pageIndex); } private void setAdapter() { if (myAdapter == null) { myAdapter = new MyAdapter(); pull_lv.setAdapter(myAdapter); } else { myAdapter.notifyDataSetChanged(); } } class MyAdapter extends BaseAdapter { @Override public int getCount() { return newslist.size(); } @Override public Object getItem(int position) { return newslist.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = View.inflate(MainActivity.this, R.layout.item, null); ImageView img =(ImageView) view.findViewById(R.id.img); TextView tv = (TextView) view.findViewById(R.id.tv); ImageLoader.getInstance().displayImage(newslist.get(position).getPicUrl(),img,options); tv.setText(newslist.get(position).getTitle()); return view; } }}
//布局
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:ptr="http://schemas.android.com/apk/res-auto" tools:context="com.example.a1019.MainActivity"> <com.handmark.pulltorefresh.library.PullToRefreshListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/pull_lv" ptr:ptrDrawable="@drawable/default_ptr_flip" ptr:ptrAnimationStyle="flip" ptr:ptrHeaderBackground="#383838" ptr:ptrHeaderTextColor="#FFFFFF" ></com.handmark.pulltorefresh.library.PullToRefreshListView>
阅读全文
0 0
- PullToRefresh 上拉刷新,下拉加载网络数据 ListView
- Listview(PullToRefresh ) 下拉刷新,上拉加载
- PullToRefresh上拉加载下拉刷新GridView和ListView
- Pulltorefresh实现ListView下拉刷新,上拉加载
- PullToRefreshListView上拉加载,下拉刷新 刷新网络数据 简单实现ListView显示网络数据
- pulltorefresh 上拉加载 下拉刷新
- 下拉刷新,上拉加载更多 PullToRefresh
- Android-PullToRefresh下拉刷新,上拉加载
- PullToRefresh实现上拉加载下拉刷新
- PullToRefresh上拉刷新下拉加载
- PullToRefresh上拉加载,下拉刷新
- PullToRefresh上拉刷新下拉加载
- 上拉刷新下拉加载控件-PullToRefresh
- 上拉加载下拉刷新 PullToRefresh
- PullToRefresh上拉加载下拉刷新
- pulltorefresh上拉加载 下拉刷新
- PullToRefresh下拉刷新和上拉加载
- PullToRefresh的上拉加载下拉刷新
- CentOS添加yum源的目录
- Hibernate SQL 方言(hibernate.dialect)
- PHPCMS V9循环调用指定栏目下的所有单页信息
- 配置maven、初始化仓库及修改本地仓库位置
- K组翻转链表-LintCode
- PullToRefresh 上拉刷新,下拉加载网络数据 ListView
- 表单各种元素
- 原始编译r40的tinav2.1(取UART打印)(分色排版)
- eclipse使用CTRL+H Search 之后, 如何打开多个标签页
- 2017.10.19 起床困难综合征 思考记录
- linux 查找某目录下包含关键字内容的文件
- LeetCode 58 Length of Last Word
- SpringMVC+Spring+mybatis+redis项目从零开始--redis缓存策略和配置实现
- android studio安装模拟器的坑爹问题