使用Web服务调用每隔N分钟刷新一次列表视图。刷新后,我的当前位置返回列表视图中的第一项。
这是我的代码。
private void updateListUI(String response){
arrList = new ArrayList<Object>(); // to store array list
Object obj;
obj = some data; // some parsing of data and store in obj instance
arrList.add(obj);
if(listview.getAdapter()==null){
adapter = new customAdapter(myActivity,layout,arrList);
listview.setAdapter(adapter);
}else{
HeaderViewListAdapter adapterwrap =
(HeaderViewListAdapter) listview.getAdapter();
BaseAdapter basadapter = (BaseAdapter) adapterwrap.getWrappedAdapter();
customAdapter ad = (customAdapter)basadapter;
ad.setData(arrList); // it is a func in custom adapter that add items
ad.notifyDataSetChanged();
// here i want to set the position of list view,as it goes back to first item
}
}
BroadcastReceiver serviceReceiver = new BroadcastReceiver() {
public void onReceive( final Context context, final Intent intent ) {
updateListUI(intent.getStringExtra(response_from_service));
}
}
// Intent服务在完成调用时调用webservice和广播响应给接收者。我的问题是每个updateListUI调用列表视图都返回到第一个位置。有什么方法可以解决这个问题吗?
答案 0 :(得分:2)
您可以使用以下方法恢复ListView的位置:
int position = 12; // your position in listview
ListView listView = (ListView) findViewById(R.id.listView);
listView.setSelectionFromTop(position, 0);
答案 1 :(得分:2)
使用listLead.setSelectionFromTop(index,top);在列表视图中设置位置
答案 2 :(得分:0)
而不是在刷新期间加载setAdapter
使用以下代码......它会起作用
yourAdapterName.notifyDataSetChanged();
答案 3 :(得分:0)
只需在要刷新列表视图的位置使用 notifyDataSetChanged()方法。