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));
 }
}

// インテント サービスは webservice を呼び出し、呼び出しの終了時にレシーバーに応答をブロードキャストします。私の質問は、すべての 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 に答える