PullToRefreshListView 获取网络数据实现上下拉刷新加载数据

  需要的依赖:

compile 'com.github.userswlwork:pull-to-refresh:1.0.0'


布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    tools:context="com.bwei.ssp.day17_rk.MainActivity"
    android:orientation="vertical">
    
    <com.handmark.pulltorefresh.library.PullToRefreshListView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="8"
        android:id="@+id/plv"
        />

</LinearLayout>
 主类:

package com.bwei.ssp.day17_rk;

import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
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.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
import com.nostra13.universalimageloader.core.ImageLoader;

import java.util.List;

public class MainActivity extends AppCompatActivity {

    private PullToRefreshListView plv;
    private ImageLoader instance;
    private  String url ="http://gank.io/api/data/Android/10/1";
    private List<Bean.ResultsBean> list;
    private Madapter madapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        plv = (PullToRefreshListView) findViewById(R.id.plv);
        plv.setMode(PullToRefreshBase.Mode.BOTH);
        itinData();
        instance = ImageLoader.getInstance();
        madapter = new Madapter();
        plv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
                list.clear();
                itinData();
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
               list.clear();
                itinData();
            }
        });

        ;

    }



    private void itinData() {
        new MAszyTask().execute(url);
    }

     class MAszyTask extends AsyncTask<String,Void ,String>{
        @Override
        protected String doInBackground(String... strings) {
            return Tools.getJson(strings[0]);
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            Log.e("TAG", s );
            Gson gson = new Gson();
            Bean bean = gson.fromJson(s, Bean.class);
            list = bean.getResults();
            plv.setAdapter(madapter);
        }
    }

    private class Madapter 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) {
            view =View.inflate(MainActivity.this,R.layout.item,null);
           TextView tv =(TextView) view.findViewById(R.id.tv);
           ImageView ig =(ImageView) view.findViewById(R.id.ig);
            tv.setText(list.get(i).getDesc());
            instance.displayImage("http://img.gank.io/58925abb-3e11-4d6e-9e44-a4567c03d03f",ig);
            return view;
        }
    }
}

需要的工具类:

package com.bwei.ssp.day17_rk;

import android.app.Application;

import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;

/**
 * Created by lenovo on 2017/10/20.
 */

public class MApp extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        ImageLoaderConfiguration build = new ImageLoaderConfiguration.Builder(this).build();
        ImageLoader.getInstance().init(build);
    }
}
需要的请求网络的类:

package com.bwei.ssp.day17_rk;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

/**
 * Created by lenovo on 2017/10/8.
 */

public class Tools {

    private static  String tag ="ssp";
  public static  String getJson(String url){
      try {
          URL url1 = new URL(url);
          HttpURLConnection urlConnection = (HttpURLConnection) url1.openConnection();
          int responseCode = urlConnection.getResponseCode();
          if(responseCode==200){
              InputStream inputStream = urlConnection.getInputStream();
              StringBuilder stringBuilder = new StringBuilder();
              BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
              String temp="";
              while((temp=bufferedReader.readLine())!=null){
                  stringBuilder.append(temp);
              }
              String str = stringBuilder.toString();
              return  str;
          }else{
              Log.e(tag, responseCode+"" );
          }
      } catch (MalformedURLException e) {
          e.printStackTrace();
      } catch (IOException e) {
          e.printStackTrace();
      }
      return "";
  }

  public  static Bitmap getBitmap(String Burl){
      try {
          URL url = new URL(Burl);
          HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
          int responseCode = urlConnection.getResponseCode();
          if(responseCode==200){
              InputStream inputStream = urlConnection.getInputStream();
              Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
              return bitmap;
          }else{
              Log.e(tag, responseCode+"" );
          }
      } catch (MalformedURLException e) {
          e.printStackTrace();
      } catch (IOException e) {
          e.printStackTrace();
      }
      return null;
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值