XlistView、ListView的基本应用

XlistView上拉加载刷新
public class MainActivity extends Activity {
	List<News> list = new ArrayList<News>();
	List<News> list2 = new ArrayList<News>();
	MyAdapter adapter;
	InputStream is;
	int pager = 0;
	XListView xlist;
	Handler handler = new Handler() {
		public void handleMessage(Message msg) {

			int i = msg.what;
			if (i == 1) {
				adapter = new MyAdapter(MainActivity.this, list);
				xlist.setAdapter(adapter);
			} else {
				adapter.notifyDataSetChanged();
			}
		};
	};

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

		xlist = (XListView) findViewById(R.id.xlist);
		xlist.setPullLoadEnable(true);
		xlist.setPullRefreshEnable(true);

		new Thread() {
			public void run() {
				try {
					is = Utils.readXMLinput("http://www.oschina.net/action/api/news_list?catalog=1&pageIndex=" + pager
							+ "&pageSize=20");
					list = Utils.jiexieXML(is);
					Message msg = new Message();
					msg.what = 1;
					handler.sendEmptyMessage(msg.what);
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}.start();

		xlist.setXListViewListener(new IXListViewListener() {

			@Override
			public void onRefresh() {
				if (pager == 0) {
					Toast.makeText(MainActivity.this, "这已经是最新页", Toast.LENGTH_SHORT).show();
				} else {
					pager = 0;
					new Thread() {
						public void run() {
							try {
								is = Utils
										.readXMLinput("http://www.oschina.net/action/api/news_list?catalog=1&pageIndex="
												+ pager + "&pageSize=20");
								list2 = Utils.jiexieXML(is);
								list.addAll(list2);
								Message msg = new Message();
								msg.what = 2;
								handler.sendEmptyMessage(msg.what);
								stopLoadOrRefresh();
							} catch (Exception e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
						}
					}.start();
				}
				stopLoadOrRefresh();
			}

			@Override
			public void onLoadMore() {
				pager++;
				new Thread() {
					public void run() {
						try {
							is = Utils.readXMLinput("http://www.oschina.net/action/api/news_list?catalog=1&pageIndex="
									+ pager + "&pageSize=20");
							list2 = Utils.jiexieXML(is);
							list.addAll(list2);
							Message msg = new Message();
							msg.what = 2;
							handler.sendEmptyMessage(msg.what);
							stopLoadOrRefresh();
						} catch (Exception e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
					}
				}.start();
			}
		});

	}

	private void stopLoadOrRefresh() {
		// 停止加载
		xlist.stopLoadMore();
		// 停止刷新
		xlist.stopRefresh();
		// 最近一次刷新时间
		xlist.setRefreshTime("刚刚");
	}
}
ListView上拉加载
<pre name="code" class="java">public class MainActivity extends Activity {
	private ListView html;
	//第一页的Url
	//第二页的Url
	int pager = 0;
	private String url2 = "http://www.oschina.net/action/api/news_list?catalog=1&pageIndex=2&pageSize=20";
	//输入流
	InputStream input;
	//两个List集合
	List<News> list = new ArrayList<News>();
	List<News> list2 = new ArrayList<News>();
	//自定义的BaseAdapter
	MyAdapter adapter;
	//判断是否屏幕中最后一个条目是最后一个条目了
	boolean isLast;
	Handler handler = new Handler() {
		public void handleMessage(Message msg) {
			if (msg.what == 1) {
				adapter = new MyAdapter(MainActivity.this, list);
				html.setAdapter(adapter);
			}else{
				adapter.notifyDataSetChanged();
			}
		};
	};

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

		html = (ListView) findViewById(R.id.list);
		new Thread() {
			public void run() {
				try {
					input = Utils.readXMLinput("http://www.oschina.net/action/api/news_list?catalog=1&pageIndex="+pager+"&pageSize=20");
					list = Utils.jiexieXML(input);
					Log.e("list", list.toString());
					Message msg = new Message();
					msg.what = 1;
					handler.sendEmptyMessage(msg.what);
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}	
			}
		}.start();
		
		
		html.setOnScrollListener(new OnScrollListener() {

			@Override
			public void onScrollStateChanged(AbsListView view, int scrollState) {
				pager++;
				//如果屏幕停止滑动且屏幕中最后一条条目是最后一条条目的时候第二次请求数据
				if (OnScrollListener.SCROLL_STATE_IDLE == scrollState && isLast) {
					Toast.makeText(MainActivity.this, "正在加载", Toast.LENGTH_SHORT).show();
					new Thread() {
						public void run() {
							try {
								input = Utils.readXMLinput("http://www.oschina.net/action/api/news_list?catalog=1&pageIndex="+pager+"&pageSize=20");
								list2 = Utils.jiexieXML(input);
								//拼接
								list.addAll(list2);
								Log.e("list", list.toString());
								Message msg = new Message();
								msg.what = 2;
								handler.sendEmptyMessage(msg.what);
							} catch (Exception e) {
								e.printStackTrace();
							}
						}
					}.start();
				}
			}

			@Override
			public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
				isLast = ((visibleItemCount +firstVisibleItem) ==totalItemCount );
			}
		});
	}

}



                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值