如何使用XlistView


<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.bwie.xlistviewnetdemo.MainActivity">


    <!--全包名導入-->
    <com.bwie.xlistviewlibrary.view.XListView
        android:id="@+id/xlv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</android.support.constraint.ConstraintLayout>

佈局文件代碼

-----------------------------------------

package com.bwie.xlistviewnetdemo;


import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;


import com.bwie.xlistviewlibrary.utils.NetWordUtils;
import com.bwie.xlistviewlibrary.view.XListView;
import com.google.gson.Gson;
import com.nostra13.universalimageloader.core.ImageLoader;


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


/**
 * 實現IXListView接口;
 */
public class MainActivity extends AppCompatActivity  implements XListView.IXListViewListener{


    String baseUrl = "http://api.expoon.com/AppNews/getNewsList/type/1/p/";
    int page;
    private XListView xListView;
    List<Goods.DataBean> list = new ArrayList<>(); //大集合
    private MAdapter mAdapter;
    private ImageLoader imageLoaderInstances;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        xListView = (XListView) findViewById(R.id.xlv);
        imageLoaderInstances = ImageLoader.getInstance();
        mAdapter = new MAdapter();
        xListView.setAdapter(mAdapter);
        getNetData(0);
        //設置xListView可以上拉加載更多功能
        xListView.setPullLoadEnable(true);
        //設置接口的實現類;this指的是MainActivity自己;類似button的點擊事件;
        //設置監聽,
        //設置監聽,
        //設置監聽,
        xListView.setXListViewListener(this);

    }


    /**
     * 請求網絡
     */
    private void getNetData(int page) {
        //baseUrl = http://api.expoon.com/AppNews/getNewsList/type/1/p/
        
        // 拼接後 = http://api.expoon.com/AppNews/getNewsList/type/1/p/1
        new MAsyncTask().execute(baseUrl+page);
    }

    /**
     * 下拉刷新功能:請求服務器最新的數據
     */
    @Override
    public void onRefresh() {
        // 清空集合
        //重新請求數據的第一頁
        //更新適配器哦
        list.clear();
        getNetData(0);


    }

    /**
     * 上拉加載更多的功能,
     */
    @Override
    public void onLoadMore() {
        //請求新的數據,把數據放入到大集合中
        //更新適配器
        //停止刷新ui
        page++;
        getNetData(page);


    }


    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 viewItem = View.inflate(MainActivity.this, R.layout.listview, null);
            TextView textView = (TextView) viewItem.findViewById(R.id.textView);
            ImageView imageView = (ImageView) viewItem.findViewById(R.id.imageView);
            textView.setText(list.get(i).getNews_title());
            imageLoaderInstances.displayImage(list.get(i).getPic_url(), imageView);

            return viewItem;
        }
    }

    private class MAsyncTask extends AsyncTask<String, Void, String> {

        @Override
        protected String doInBackground(String... strings) {
            return NetWordUtils.getNetjson(strings[0]);
        }


        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            Gson gson = new Gson();
            Goods goods = gson.fromJson(s, Goods.class);
            List<Goods.DataBean> dataTemp = goods.getData();
            list.addAll(dataTemp);
            //更新適配器
            mAdapter.notifyDataSetChanged();
            //讓刷新頭和刷新底部 消失;
            uiComplete();


        }
    }


    /**
     * 讓xlistview的刷新頭消失;
     */
    private void uiComplete() {


        xListView.stopRefresh();    //讓刷新頭消失
        xListView.stopLoadMore();   //讓上拉加載的ui消失;
        xListView.setRefreshTime("剛剛");
    }

}

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