xlistview上拉刷新、下拉加载

XListView

XListViewFooter

XListViewHeader

xlistview_footer.xml

xlistview_header.xml粘贴进工程中

package com.hxx;

import java.io.InputStream;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import com.bwei.adapter.MyBaseAdapter;
import com.bwei.bean.ListData;
import com.bwei.bean.NewsInfo;
import com.bwei.bean.NewsInfo.Articles;
import com.bwei.utils.StreamUtils;
import com.bwei.view.XListView;
import com.bwei.view.XListView.IXListViewListener;
import com.google.gson.Gson;

import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Toast;

public class MainActivity extends Activity implements IXListViewListener {

    private Handler handler;
    private XListView lv;
    private List<Articles> list;
    private int num = 0;
    private MyBaseAdapter adapter;

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

        // 找控件
        lv = (XListView) findViewById(R.id.main_lv);
        lv.setPullLoadEnable(true);

        // 获取网络数据
        startAsyncTask(num);

        // 设置监听
        lv.setXListViewListener(this);

        handler = new Handler();

        // 设置条目点击监听
        lv.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {

                Intent intent = new Intent(MainActivity.this,
                        DetailActivity.class);

                intent.putExtra("position", arg2 - 1);

                startActivity(intent);

            }
        });

    }

    private void startAsyncTask(int num) {

        String path = "http://121.42.8.95:8090/EasyApp/mobile/JSONRequest?req=al&key=huihai.xuexifangfa&start="
                + num + "&size=10&graduation=0";
        MyAsyncTask asyncTask = new MyAsyncTask();
        asyncTask.execute(path);

    }

    /**
     * 异步类
     */
    class MyAsyncTask extends AsyncTask<String, Void, NewsInfo> {

        private ProgressDialog dialog;

        @Override
        protected void onPreExecute() {
            super.onPreExecute();

            dialog = new ProgressDialog(MainActivity.this);
            dialog.setTitle("加载数据");
            dialog.setMessage("正在加载数据,请稍后......");
            dialog.show();

        }

        @Override
        protected NewsInfo doInBackground(String... params) {

            // 获取数据
            NewsInfo newsInfo = getNewsInfo(params[0]);

            return newsInfo;
        }

        @Override
        protected void onPostExecute(NewsInfo result) {
            super.onPostExecute(result);

            // 取消进度
            dialog.cancel();

            if (result != null) {

                list = result.articles;

                ListData.list = result.articles;

                // 展示数据
                setData();

            } else {
                Toast.makeText(MainActivity.this, "加载失败", 0).show();
            }

        }

    }

    public NewsInfo getNewsInfo(String string) {

        try {
            HttpClient httpClient = new DefaultHttpClient();
            HttpGet httpGet = new HttpGet(string);
            HttpResponse httpResponse = httpClient.execute(httpGet);

            // 获取结果码
            int statusCode = httpResponse.getStatusLine().getStatusCode();

            if (statusCode == 200) {

                // 获取内容
                InputStream is = httpResponse.getEntity().getContent();
                String data = StreamUtils.getStreamToString(is);

                // 解析
                Gson gson = new Gson();

                NewsInfo newsInfo = gson.fromJson(data, NewsInfo.class);

                return newsInfo;
            }

        } catch (Exception e) {
            Toast.makeText(MainActivity.this, "加载失败", 0).show();
            e.printStackTrace();
        }

        return null;

    }

    public void setData() {

        // 设置适配器
        adapter = new MyBaseAdapter(this, list);

        lv.setAdapter(adapter);

    }

    private void onLoad() {
        lv.stopRefresh();
        lv.stopLoadMore();
        lv.setRefreshTime("刚刚");
    }

    // 刷新
    @Override
    public void onRefresh() {

        handler.postDelayed(new Runnable() {

            @Override
            public void run() {

              
                num =0;
                startAsyncTask(num);
                // mAdapter.notifyDataSetChanged();
//                adapter = new MyBaseAdapter(MainActivity.this, list);
//                lv.setAdapter(adapter);
                adapter.notifyDataSetChanged();
                onLoad();

            }
        }, 2000);

    }

    // 加载
    @Override
    public void onLoadMore() {

        handler.postDelayed(new Runnable() {

            @Override
            public void run() {

                
                num +=10;
                startAsyncTask(num);
                adapter.notifyDataSetChanged();
                onLoad();

            }
        }, 2000);

    }

}

 

 

加载和刷新

if (result != null) {
                Gson gson = new Gson();
                BoKeBean boke = gson.fromJson(result, BoKeBean.class);
                
                if(flag==true){
                    System.out.println("头部添加");
//                    list.addAll(0, boke.T1349837698345);
                    list.addAll(0, boke.T1349837698345);
                }else{
                    if(tag==false){
                        System.out.println("首次添加");
                        tag=true;
                        list=boke.T1349837698345;
                    }else{
                        System.out.println("尾部添加");
                        list.addAll(boke.T1349837698345);
                        
                    }
                }
//                list = boke.T1349837698345;
                setData();

            } else {
                Toast.makeText(getActivity(), "加载失败", 0).show();
            }

 

posted on 2016-05-30 16:44  glj521  阅读(219)  评论(0编辑  收藏  举报