我在 listfragment 中使用 cursoradapter 时遇到的特殊问题。
在我的 onLoadFinished 中,我选择了先前选择的项目,以便将列表视图滚动到上一个位置(然后突出显示该项目)。
除了滚动部分之外,这非常有效。
如果我只使用一个帖子并延迟它(甚至说 5 秒),则该项目被选中但列表不会滚动(此时所选项目可能不在视图中) 有或没有延迟与只有一个帖子相同的行为。
我必须再次发布 setSelection 以使列表视图滚动,以便选中的项目在视图中。
我延迟第一个或第二个滚动帖子多长时间都没关系。
这是我肮脏的解决方法,但我对此并不满意。有任何想法吗?
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
mAdapter.swapCursor(data);
getListView().post(new Runnable() {
@Override
public void run() {
getListView().requestFocusFromTouch();
getListView().setSelection(selectedposition);
getListView().performItemClick(getListView().getAdapter().getView(selectedposition, null, null), selectedposition, selectedid);
getListView().clearFocus();
}
});
getListView().postDelayed(new Runnable() {
@Override
public void run() {
getListView().requestFocusFromTouch();
getListView().setSelection(selectedposition);
getListView().performItemClick(getListView().getAdapter().getView(selectedposition, null, null), selectedposition, selectedid);
getListView().clearFocus();
}
}, 500);
}