XListView使用及上拉加载和下拉刷新

注意:我用的xlistview_library是提前写好的。
在这里插入图片描述
导入布局

<?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=".MainActivity">

    <com.qy.xlistview.XListView
        android:id="@+id/xlistview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>


</android.support.constraint.ConstraintLayout>

Http网络请求数据页面

package com.example.day06.http;

import android.os.AsyncTask;

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




/**
 * @Auther: 努力
 * @Date: 2019/1/3 10:47:${卢文杰}
 * @Description:
 */
public class Http {

    public static void HttpAsynTask(String strUrl, final CallBackS callBackS){
        new AsyncTask<String, Integer, String>() {
            @Override
            protected String doInBackground(String... strings) {
                return requestHttpUrl(strings[0]);
            }

            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                //接口回调的方法
                callBackS.getDat(s);
            }
        } .execute(strUrl);
    }

    //接口
    public interface CallBackS{
        void getDat(String str);
    }



    public static String requestHttpUrl(String strUrl) {

        //设置url
        try {
            URL url = new URL(strUrl);
            //获取HttpURLConnection
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            //设置为get请求
            connection.setRequestMethod("GET");
            //设置连接主机超时时间
            connection.setConnectTimeout(5000);
            //设置从主机读取数据超时
            connection.setReadTimeout(5000);
            //得到数据
            InputStream stream = connection.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
            //拼接数据
            StringBuilder builder = new StringBuilder();
            String str = "";
            while ((str = reader.readLine()) != null) {
                builder.append(str);
            }
            //关闭连接
            connection.disconnect();
            //返回数据
            return builder.toString();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

}

MainActivity

package com.example.day06;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import com.example.day06.adapter.MyAdapter;
import com.example.day06.bean.JsonBean;
import com.example.day06.http.Http;
import com.google.gson.Gson;
import com.qy.xlistview.XListView;

import java.util.List;

public class MainActivity extends AppCompatActivity {

    private XListView xListView;
    private String str = "接口";
    private List<JsonBean.ResultBean.DataBean> data;
    private MyAdapter myAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //找控件
        xListView = findViewById(R.id.xlistview);
        //启动(true)或禁用(false)上拉加载
        xListView.setPullLoadEnable(true);
        //注册XListViewListener接口
        xListView.setXListViewListener(new XListView.IXListViewListener() {
            //下拉
            @Override
            public void onRefresh() {
                //刷新的回调
                //数据
                Http.HttpAsynTask(str, new Http.CallBackS() {

                    @Override
                    public void getDat(String str) {
                        Gson gson = new Gson();
                        JsonBean jsonBean = gson.fromJson(str, JsonBean.class);
                        //注意data和adapter要提全局
                        data = jsonBean.getResult().getData();
                        myAdapter = new MyAdapter(MainActivity.this, data);
                        xListView.setAdapter(myAdapter);
                        onLoad();
                    }
                });
            }

            //上拉
            @Override
            public void onLoadMore() {
                //加载数据调用的方法
                //数据
                Http.HttpAsynTask(str, new Http.CallBackS() {

                    @Override
                    public void getDat(String str) {
                        Gson gson = new Gson();
                        JsonBean jsonBean = gson.fromJson(str, JsonBean.class);
                        List<JsonBean.ResultBean.DataBean> list = jsonBean.getResult().getData();
                        //把数据放进集合中
                        data.addAll(list);
                        //刷新集合
                        myAdapter.notifyDataSetChanged();
                        onLoad();
                    }
                });
            }
        });
        //数据
        Http.HttpAsynTask(str, new Http.CallBackS() {

            @Override
            public void getDat(String str) {
                //解析
                Gson gson = new Gson();
                JsonBean jsonBean = gson.fromJson(str, JsonBean.class);
                data = jsonBean.getResult().getData();
                //适配器
                myAdapter = new MyAdapter(MainActivity.this, data);
                //设置适配器
                xListView.setAdapter(myAdapter);
            }
        });
    }
    private void onLoad() {
        //停止加载更多,重置头视图
        xListView .stopRefresh();
        //停止加载更多,重置脚视图
        xListView.stopLoadMore();
        //设置刷新时间
        xListView.setRefreshTime("刚刚刷新了");
    }
}

注意一定要写权限:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.day06">
    <uses-permission android:name="android.permission.INTERNET"/>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

效果图:
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43797842/article/details/85685796