You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何更新ListView后不自动滚动至首行?

解决ListView刷新后自动滚动到首行的问题

你当前的问题出在每次刷新都重新创建Adapter并调用setAdapter,这会让ListView重置状态,自动滚到顶部。要解决这个问题,核心是复用已有的Adapter,只更新数据源并通知数据变化,步骤如下:

1. 将Adapter改为全局成员变量

在你的ListActivity中,把Adapter声明为类的成员变量,不要在点击事件里临时创建:

private listviewAdapterList adapterList; // 全局Adapter变量

2. 初始化时只创建一次Adapter

在Activity的初始化逻辑(比如onCreate方法)里,完成Adapter的创建和ListView的绑定,只做一次:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_list);
    
    lvList = findViewById(R.id.lvList);
    // 初始化数据源和Adapter
    dbWorker.fillList();
    ArrayList<Uni> initialList = StaticVariables.List;
    adapterList = new listviewAdapterList(ListActivity.this, initialList);
    lvList.setAdapter(adapterList);
    
    // 设置点击事件
    lvList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            // 这里处理你的行数据更新逻辑
            updateRowData(position); // 假设这是你更新数据的方法
            
            // 刷新ListView的核心代码
            dbWorker.fillList(); // 从数据库重新获取最新数据
            adapterList.setList(StaticVariables.List); // 更新Adapter的数据源
            adapterList.notifyDataSetChanged(); // 通知Adapter数据变化
        }
    });
}

3. 给Adapter添加更新数据源的方法

在你的listviewAdapterList类中,添加一个用于更新数据源的方法,确保Adapter能拿到最新的数据集:

public class listviewAdapterList extends BaseAdapter {
    private Context mContext;
    private ArrayList<Uni> mList; // Adapter内部保存的数据源

    // 构造方法
    public listviewAdapterList(Context context, ArrayList<Uni> list) {
        mContext = context;
        mList = list;
    }

    // 添加更新数据源的方法
    public void setList(ArrayList<Uni> newList) {
        this.mList = newList;
    }

    // 其他必要的Adapter方法(getCount、getItem等)...
}

原理说明

  • 复用已有的Adapter,避免了ListView重新初始化布局,因此会保留当前的滚动位置。
  • notifyDataSetChanged()只会通知Adapter刷新已有的视图,不会改变ListView的滚动状态。

内容的提问来源于stack exchange,提问作者JohnBaron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 15:02:10