2012-04-22 84 views
0

我正在使用以下代码来重新加载我的ListView。我应该如何修改它以保持ListView的位置?保留ListView的位置

protected void refreshListView() { 
    datasource = new DataSource(this); 
    try { 
     datasource.ScanVirtualSystems(); 
    } catch (Exception e) { 
     Log.w("Exception", "exception in ScanVirtualSystems() method"); 
    } 
    MatrixCursor cursor; 
    cursor = datasource.getnameList(); 
    startManagingCursor(cursor); 
    String[] from = { "name", "desc", "status", "path", "folder", 
      BaseColumns._ID }; 
    int[] to = { R.id.name, R.id.desc, R.id.status, R.id.path }; 
    final CustomSCAdapter adapter = new CustomSCAdapter(
      Mactivity.this, R.layout.row, cursor, from, to); 
    adapter.notifyDataSetChanged(); 
    setListAdapter(adapter); 
} 

回答

1
protected void refreshListView() { 

    ListView lv = getListView(); 
    int position = lv.getFirstVisiblePosition(); 

    datasource = new DataSource(this); 
    try { 
     datasource.ScanVirtualSystems(); 
    } catch (Exception e) { 
     Log.w("Exception", "exception in ScanVirtualSystems() method"); 
    } 
    MatrixCursor cursor; 
    cursor = datasource.getnameList(); 
    startManagingCursor(cursor); 
    String[] from = { "name", "desc", "status", "path", "folder", 
      BaseColumns._ID }; 
    int[] to = { R.id.name, R.id.desc, R.id.status, R.id.path }; 
    final CustomSCAdapter adapter = new CustomSCAdapter(
      Mactivity.this, R.layout.row, cursor, from, to); 
    adapter.notifyDataSetChanged(); 
    setListAdapter(adapter); 

    lv.smoothScrollToPosition(position); 
} 
+0

你的第一个答案是工作的一个,这一个刚刚滚动到第一个孩子。 – 2012-04-23 07:59:13