天天看点

XListView加载-刷新

MainActivity

package com.example.xlistviewweek2;

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

import com.example.xlistview.me.maxwin.view.XListView;

public class MainActivity extends AppCompatActivity {

    private NewsAdapter mAdapter;
    private int mPage = 1;
    private XListView xListView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        xListView = findViewById(R.id.listview);

        mAdapter = new NewsAdapter(this);
        xListView.setAdapter(mAdapter);

        xListView.setPullRefreshEnable(true);
        xListView.setPullLoadEnable(true);
        xListView.setXListViewListener(new XListView.IXListViewListener() {
            @Override
            public void onRefresh() {
                mPage = 1;
                initData();
            }
            @Override
            public void onLoadMore() {
                mPage++;
                initData();
            }
        });
        initData();
    }

    private void initData() {
        NetUtil.getInstance().getRequest("http://api.expoon.com/AppNews/getNewsList/type/1/p/1", NewsBean.class, new NetUtil.CallBack<NewsBean>() {
            @Override
            public void OnSuccess(NewsBean newsBean) {
                if (mPage == 1){
                    mAdapter.setDatas(newsBean.getData());
                }else {
                    mAdapter.addDatas(newsBean.getData());
                }
                xListView.stopRefresh();
                xListView.stopLoadMore();

            }
        });
    }


}

           

Adapter适配器

package com.example.xlistviewweek2;

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

import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.display.CircleBitmapDisplayer;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;

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

class NewsAdapter extends BaseAdapter {
    private List<NewsBean.DataBean> mlist;
    private Context mContext;

    public NewsAdapter(Context mContext) {
        this.mContext = mContext;
        mlist = new ArrayList<>();
    }

    public void setDatas(List<NewsBean.DataBean> data) {
        mlist.clear();
        if (data != null){
            mlist.addAll(data);
        }
        notifyDataSetChanged();
    }
    public void addDatas(List<NewsBean.DataBean> data) {
        if (data != null){
            mlist.addAll(data);
        }
        notifyDataSetChanged();
    }

    @Override
    public int getCount() {
        return mlist.size();
    }

    @Override
    public NewsBean.DataBean getItem(int position) {
        return mlist.get(position);
    }

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder mHolder;
        if (convertView == null){
            convertView = LayoutInflater.from(mContext).inflate(R.layout.left_item, parent, false);
            mHolder = new ViewHolder();
            mHolder.textView1 = convertView.findViewById(R.id.text1);
            mHolder.textView2 = convertView.findViewById(R.id.text2);
            mHolder.imageView = convertView.findViewById(R.id.image);
            convertView.setTag(mHolder);
        }else {
            mHolder = (ViewHolder) convertView.getTag();
        }
        mHolder.textView1.setText(getItem(position).getNews_title());
        mHolder.textView2.setText(getItem(position).getNews_summary());

        DisplayImageOptions options = new DisplayImageOptions.Builder()
                .cacheInMemory(true)
                .cacheOnDisk(true)
                .displayer(new RoundedBitmapDisplayer(20))
                .build();
        ImageLoader.getInstance().displayImage(getItem(position).getPic_url(), mHolder.imageView, options);

        return convertView;
    }


    class ViewHolder{
        ImageView imageView;
        TextView textView1, textView2;
    }
}

           

NetUtil解析工具类

package com.example.xlistviewweek2;

import android.annotation.SuppressLint;
import android.os.AsyncTask;

import com.google.gson.Gson;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

public class NetUtil {
    private static NetUtil instance;
    private NetUtil(){
    }
    public static NetUtil getInstance(){
        if (instance == null){
            instance = new NetUtil();
        }
        return instance;
    }
    //接口
    public interface CallBack<T>{
        void OnSuccess(T t);
    }
    //qing返回数据
    @SuppressLint("StaticFieldLeak")
    public void getRequest(final String urlStr, final Class clazz, final CallBack callBack){
        new AsyncTask<String, Void, Object>(){
            @Override
            protected Object doInBackground(String... strings) {
                return getRequest(urlStr, clazz);
            }

            @Override
            protected void onPostExecute(Object o) {
                callBack.OnSuccess(o);
            }
        }.execute(urlStr);
    }


    //返回bean
    public <T> T getRequest(String urlStr, Class clazz){
        return (T) new Gson().fromJson(getRequest(urlStr), clazz);
    }

    //获取网络
    public String getRequest(String urlStr){
        String result = "";
        try {
            URL url = new URL(urlStr);
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.setRequestMethod("GET");
            urlConnection.setConnectTimeout(5000);
            urlConnection.setReadTimeout(5000);
            if (urlConnection.getResponseCode() == 200){
                result = stream2String(urlConnection.getInputStream());
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return result;
    }
    public String stream2String(InputStream inputStream) throws IOException {
        StringBuilder stringBuilder = new StringBuilder();
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
        for (String temp = bufferedReader.readLine(); temp != null; temp = bufferedReader.readLine()){
            stringBuilder.append(temp);
        }
        return stringBuilder.toString();
    }
}

           

App预加载

package com.example.xlistviewweek2;

import android.app.Application;

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

public class App extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        ImageLoader.getInstance().init(new ImageLoaderConfiguration.Builder(this)
             .diskCacheSize(50*1024*1024)
                .memoryCacheSizePercentage(12)
                .defaultDisplayImageOptions(new DisplayImageOptions.Builder()
                        .cacheInMemory(true)
                        .cacheOnDisk(true)
                        .build()
                )
               .build()
        );
    }
}