1. 程式人生 > >XListiew顯示上拉載入,下拉重新整理

XListiew顯示上拉載入,下拉重新整理

activity_main

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

xlist_item

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <ImageView
        android:id="@+id/img"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:src="@mipmap/ic_launcher_round"
        android:padding="10dp"/>
    <TextView
        android:id="@+id/tv_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="標題"
        android:textSize="20sp"
        android:paddingTop="20sp"/>
</LinearLayout>

MainActivity

package wanghuiqi.bawie.com.app_xlist_loadrefresh;

import android.annotation.SuppressLint; import android.os.AsyncTask; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ListView;

import com.bwie.xlistview.XListView; import com.google.gson.Gson;

import java.util.ArrayList; import java.util.List;

public class MainActivity extends AppCompatActivity {

    private XListView xlv;
    private List<News.DataBean> list;
    private NewsAdapter newsAdapter;
    private String url="http://www.xieast.com/api/news/news.php?type=top&page=";
    Handler handler=new Handler();
    private int page=1;

    @SuppressLint("StaticFieldLeak")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        xlv = findViewById(R.id.xlv);
        list = new ArrayList<>();
        //介面卡
        newsAdapter = new NewsAdapter(MainActivity.this,list);
        xlv.setAdapter(newsAdapter);

        xlv.setPullLoadEnable(true);
        xlv.setPullRefreshEnable(true);
        getDataUtil(1,false);

//設定xlistView事件
        xlv.setXListViewListener(new XListView.IXListViewListener() {
            @Override
            public void onRefresh() {
                page=1;
                getDataUtil(page,false);
            }

            @Override
            public void onLoadMore() {
                page++;
                getDataUtil(page,true);
            }
        });
    }

    private void getDataUtil(int i, final boolean b) {
        new AsyncTask<String,Integer,String>(){
            @Override
            protected String doInBackground(String... strings) {
                return HttpUtils.getFromString(strings[0]);
            }

            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                Gson gson = new Gson();
                News news = gson.fromJson(s, News.class);
                if (news!=null){
                    List<News.DataBean> data = news.getData();
                    if (data!=null){
                        list.clear();
                        list.addAll(data);
                        newsAdapter.notifyDataSetChanged();
                    }
                }
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        if(b){
                            xlv.stopLoadMore();
                        }else{
                            xlv.stopRefresh();
                            xlv.setRefreshTime("剛剛");
                        }
                    }
                },2000);
            }
        }.execute(url+page);
    }
}

HttpUtils

package wanghuiqi.bawie.com.app_xlist_loadrefresh;

import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL;

class HttpUtils {

    private static String result;

    public static String getFromString(String urlString) {
        try {
            URL url = new URL(urlString);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("GET");
            connection.setUseCaches(false);
            connection.setConnectTimeout(5000);
            if(connection.getResponseCode()==200){
                InputStream is = connection.getInputStream();
                result = getFromInputStream(is);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }

    private static String getFromInputStream(InputStream is) throws IOException {
        ByteArrayOutputStream boas = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int len=-1;
        while ((len=is.read(buffer,0,buffer.length))!=-1){
            boas.write(buffer,0,len);
            boas.flush();
        }
        is.close();
        result = boas.toString();
        boas.close();
        return result;
    }
}

MyAppImg

package wanghuiqi.bawie.com.app_xlist_loadrefresh;

import android.app.Application;

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

public class MyAppImg extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        ImageLoaderConfiguration build = new ImageLoaderConfiguration.Builder(this).build();
        ImageLoader.getInstance().init(build);
    }
}

許可權