保持ListView的位置

时间:2012-04-22 23:11:26

标签: android

我正在使用以下代码重新加载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 个答案:

答案 0 :(得分: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);
}