2 hmwzzww hmwzzww 于 2013.07.02 16:52 提问

android ListView 做下拉刷新 下拉跳到第一项怎么解决

listView.setonRefreshListener(new OnRefreshListener() {

        @Override
        public void onRefresh() {

            Log.e(TAG, "---下拉刷新---");
            new AsyncTask<Void, Void, Void>() {
                protected Void doInBackground(Void... params) {
                    try {
                        mylineslistlist.clear();
                        mylinesorderlist.clear();
                        list.clear();
                        getMylines(0);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    return null;
                }

                protected void onPostExecute(Void result) {
                    adapter.notifyDataSetChanged();
                    listView.onRefreshComplete();
                }

            }.execute();

        }
    });
listView.setOnScrollListener(new OnScrollListener() {

        @Override
        public void onScrollStateChanged(final AbsListView view,
                int scrollState) {
            listView.onScrollStateChanged(view, scrollState);
            // 数据为空--不用继续下面代码了
            if (list.size() == 0)
                return;

            // 判断是否滚动到底部
            boolean scrollEnd = false;
            try {
                if (view.getPositionForView(loadingLayout) == view
                        .getLastVisiblePosition())
                    scrollEnd = true;
            } catch (Exception e) {
                scrollEnd = false;
            }
            if (scrollEnd) {

                // 如果是自动加载,可以在这里放置异步加载数据的代码
                Log.e("LOADMORE", "loading...");
                if (currentPage < pageNum) {
                    // Log.e(TAG, "---currentPage is " + currentPage);
                    currentPage++;
                    // Log.e(TAG, "---currentPage is " + currentPage);
                    handler.postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            // Log.d(TAG, "---loadData page is" +
                            // currentPage);
                            getMylines(currentPage);

// listView.setSelection(view
// .getLastVisiblePosition() - 1); // 设置选中项
// setLoadView("加载更多"); //恢复按钮文字
}
}, 1000);
} else {
listView.removeFooterView(loadingLayout);
}

            }

        }

2个回答

qingzi635533
qingzi635533   2013.07.18 18:14
已采纳

mDataArrays.add(entity);
mAdapter.notifyDataSetChanged(); //及时通知listview更新
lv_info_contain.setSelection(mAdapter.getCount());

这些代码是将listview最新那条数据添在最后面,你可以修改下就能用。

Jave_
Jave_   2013.07.02 17:05

listView.setSelection(0);是跳到第一项
你现在是要跳到第一项还是说他自动跳到了第一项?

Jave_
Jave_ 重新获取后你需要设置你的selection在新数据的第一个
接近 5 年之前 回复
hmwzzww
hmwzzww 我把这些list(mylineslistlist、mylinesorderlist、list) 都清空,然后通过getMylines()重新获取。
接近 5 年之前 回复
Jave_
Jave_ 上面那段代码是什么意思,怎么把list都清空了
接近 5 年之前 回复
Jave_
Jave_ mylineslistlist.clear(); mylinesorderlist.clear(); list.clear(); getMylines(0);
接近 5 年之前 回复
hmwzzww
hmwzzww 它自动跳到第一项了。不要他自己跳到第一系那个
接近 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!