gpt4 book ai didi

android - setSelection 后允许滚动 ListView

转载 作者:行者123 更新时间:2023-11-29 18:02:17 27 4
gpt4 key购买 nike

我有一个 ListView ,每当更新列表时,我都会强制滚动到列表底部。但是,在滚动到列表底部后,出于某种原因, ListView 会固定在该点,用户无法在列表上来回滚动以查看其他数据。

问题:在 setSelection(list.getBottom()) 之后,我应该做什么才能再次滚动整个列表?

    @Override
public View getView(int position, View convertView, ViewGroup parent) {
/* the list is being populated here - the code has been omitted */

list.populateFrom(date, name, class);
list.clearFocus();
list.post(new Runnable() {

@Override
public void run() {

list.setSelection(list.getBottom());
}
});


return list;
}
}

最佳答案

问题在于你正在调用

 list.setSelection(list.getBottom());

getView() ,它被调用每次 ListView 需要绘制更多 View 。这意味着您不断向下滚动。

相反,从 Adapter 更新您拥有的数据集类(例如来自 Activity/Fragment ),然后重置 ListView的适配器或清除适配器并读取项目,然后调用 setSelection() .

一种方法:

  • Activity开始 AsyncTask

  • AsyncTask更新 List数据来自 doInBackground() .

  • onPostExecute() , 实例化 AdapterListdoInBackground() 传递.或者清空Adapter的数据集你目前有,然后遍历列表并将项目重新添加到 Adapter .

  • 如果重新实例化 Adapter , 设置 ListViewAdapter到你所创造的。

  • 调用 ListView#setSelection()

关于android - setSelection 后允许滚动 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15319062/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com