listView 上拉下拉 方法 都是很简单的 ,网络上还有很多开源项目,这里做个总结
这次项目中是这么写的:
1.首先实现这个接口: OnScrollListener
public class Weibo extends Activity implements OnClickListener,
OnScrollListener
2.给ListView设置这个监听方法:
lv = (ListView) findViewById(R.id.list);
lv.setOnScrollListener(this);
这两步也有其他方法,不想贴了
3.实现如下方法:
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
mPosition = firstVisibleItem + visibleItemCount;//记录下拉位置
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == this.SCROLL_STATE_FLING) {//松手并下拉到最后一条数据,就异步加载数据
Log.e("aril", "mposition:" + mPosition + ",size:" + weiboLis.size());
if (mPosition == weiboLis.size()) {
if (lastPage) {
ToastUtil.t(getApplicationContext(), "已无更多数据!");
} else {
ToastUtil.t(getApplicationContext(), "上拉更新中!");
page += 1;
GetWeiboDataTask gwt = new GetWeiboDataTask();
gwt.execute();
}
}
}
}
4.其他数据:
static int mPosition = 0;
static int page = 1;
boolean lastPage = false;
异步类中的数据:
String mWeiboString = WeiboUtil.getSomeoneWeibo(user_id, 0 + "",
10000 + "", page + "");
mTempList = JsonUtil.weiboJson(mWeiboString );
if (mTempList.size() != 10) {
lastPage = true;
}
for (WeiboBean weibo : mTempList) {
mWeiboList.add((WeiboBean) weibo);
}
5.最后是下拉后的定位问题:
网上说的这样做:
lv.setTranscriptMode(AbsListView.TRANSCRIPT_MODE_DISABLED);
并不一定能解决问题,
根据自身需要用lv.setSelection(mPosition);是个不错的选择