pulltorefresh展示

MainActivity



package com.bwei.baseclasspulltorefresh.activity;

import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

import com.bwei.baseclasspulltorefresh.R;
import com.bwei.baseclasspulltorefresh.adapter.MyAdapter;
import com.bwei.baseclasspulltorefresh.base.BaseActivity;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends BaseActivity {


    private PullToRefreshListView prlv;
    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what) {
                case 0:
                    String json = (String) msg.obj;
                    try {
                        JSONObject jsonObject = new JSONObject(json);
                        JSONArray results = jsonObject.getJSONArray("results");
                        MyAdapter adapter = new MyAdapter(MainActivity.this, results);
                        // prlv.setAdapter(adapter);
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                    break;
            }
        }
    };

    @Override
    protected int getLayoutId() {
        return R.layout.activity_main;
    }

    @Override
    protected void initView() {
        prlv = (PullToRefreshListView) findViewById(R.id.prlv);


    }

    @Override
    protected void initData() {

        //设置刷新有效
        prlv.setPullToRefreshEnabled(true);
        prlv.setMode(PullToRefreshBase.Mode.BOTH);
        //设置刷新监听
        prlv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
                Toast.makeText(MainActivity.this, "下拉刷新", Toast.LENGTH_SHORT).show();
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        prlv.onRefreshComplete();
                    }
                }, 2000);
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {

                Toast.makeText(MainActivity.this, "上拉加载", Toast.LENGTH_SHORT).show();
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        prlv.onRefreshComplete();
                    }
                }, 2000);
            }
        });
        prlv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Log.i("xxx", (position - 1) + "");
            }
        });
    }

    private List<String> datas = new ArrayList<>();

    @Override
    protected void getServerData() {
        //模拟数据
        for (int i = 0; i < 100; i++) {
            datas.add("条目:" + i);
        }
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, datas);
        prlv.setAdapter(adapter);
//---------------------------------------网络获取----------------------------------------------
        final String path = "http://gank.io/api/data/%E7%A6%8F%E5%88%A9/10/1";
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    URL url = new URL(path);
                    HttpURLConnection con = (HttpURLConnection) url.openConnection();
                    con.setConnectTimeout(5000);
                    con.setRequestMethod("GET");
                    if (con.getResponseCode() == 200) {
                        InputStream inputStream = con.getInputStream();
                        ByteArrayOutputStream bos = new ByteArrayOutputStream();
                        byte[] buffer = new byte[1024];
                        int len = 0;
                        while ((len = inputStream.read(buffer)) != -1) {
                            bos.write(buffer, 0, len);
                        }
                        inputStream.close();
                        bos.close();
                        String json = bos.toString();
                        Message message = new Message();
                        message.what = 0;
                        message.obj = json;
                        handler.sendMessage(message);

                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }
}




//适配器
package com.bwei.baseclasspulltorefresh.adapter;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import com.bwei.baseclasspulltorefresh.R;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

/**
 * 1. 类的用途
 * 2. @author forever
 * 3. @date 2018/7/20 17:24
 */


public class MyAdapter extends BaseAdapter {
    Context context;
    JSONArray data;

    public MyAdapter(Context context, JSONArray data) {
        this.context = context;
        this.data = data;
    }

    @Override
    public int getCount() {
        return data.length();
    }

    @Override
    public Object getItem(int position) {

        try {
            return data.get(position);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
          ViewHoler holer =null;
        if (convertView==null){
            convertView = View.inflate(context, R.layout.item, null);
            holer.tv_title=convertView.findViewById(R.id.tv_title);
            holer = new ViewHoler();
            convertView.setTag(holer);
        }else {
            holer = (ViewHoler) convertView.getTag();
        }
        try {
            JSONObject jsonObject = data.getJSONObject(position);
            String title = jsonObject.getString("who");
            holer.tv_title.setText(title);

        } catch (JSONException e) {
            e.printStackTrace();
        }


        return convertView;
    }

    private class ViewHoler {
        TextView tv_title;
    }
}




布局
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    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.baseclasspulltorefresh.activity.MainActivity">

    <com.handmark.pulltorefresh.library.PullToRefreshListView
        android:id="@+id/prlv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />

</android.support.constraint.ConstraintLayout>

猜你喜欢

转载自blog.csdn.net/nideyida1/article/details/81160172