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(); }