我在我的应用程序中设置了一个计时器,我可以从Web服务获取一些信息,并导致列表视图显示.现在我的问题是,每次定时器运行时,回滚到开始…
在列表视图中每次刷新时如何保持滚动位置?
我的一部分代码:
- runOnUiThread(new Runnable() {
- public void run() {
- /**
- * Updating parsed JSON data into ListView
- * */
- ListAdapter adapter = new SimpleAdapter(DashboardActivity.this,all_chat,R.layout.list_item,new String[] { TAG_FULLNAME,TAG_DATE,TAG_MESSAGE },new int[] { R.id.fullname,R.id.date,R.id.message }
- );
- // updating listview
- setListAdapter(adapter);
- }
- });
TNX.
解决方法
不要调用setAdapter().做这样的事情:
- ListAdapter adapter; // declare as class level variable
- runOnUiThread(new Runnable() {
- public void run() {
- /**
- * Updating parsed JSON data into ListView
- */
- if (adapter == null) {
- adapter = new SimpleAdapter(
- DashboardActivity.this,new String[]{TAG_FULLNAME,TAG_MESSAGE},new int[]{R.id.fullname,R.id.message});
- setListAdapter(adapter);
- } else {
- //update only dataset
- allChat = latestetParedJson;
- ((SimpleAdapter) adapter).notifyDataSetChanged();
- }
- // updating listview
- }
- });