資訊_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>

效果圖:
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章