3

使用 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 服务调用 web 服务并在结束调用时向接收者广播响应。我的问题是每个 updateListUI 调用列表视图都回到第一个位置。有什么办法可以解决这个..?

4

4 回答 4

2

您可以使用以下方法恢复 ListView 的位置:

int position = 12; // your position in listview
ListView listView = (ListView) findViewById(R.id.listView);
listView.setSelectionFromTop(position, 0);
于 2013-01-04T09:40:08.090 回答
2

使用 listLead.setSelectionFromTop(index, top); 在列表视图中设置位置

于 2013-04-10T11:07:42.240 回答
0

而不是在刷新期间加载 setAdapter

使用下面的代码......它会工作

yourAdapterName.notifyDataSetChanged();
于 2013-01-04T09:45:40.077 回答
0

只需在要刷新列表视图的位置使用方法notifyDataSetChanged()即可。

于 2013-01-04T12:27:15.043 回答