当我在ListView中选择一个项目时,如何保存ListView的滚动位置,并且我想在同一个ListView中返回。
假设我们有两个片段 - ListFragment和SomeOtherFragment。我们用SomeOtherFragment替换ListFragment。
FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.content_frame, fragment);
transaction.addToBackStack(null);
transaction.commit();
答案 0 :(得分:9)
我知道的最佳解决方案
//将ListView状态(=包括滚动位置)保存为Parcelable
Parcelable state = listView.onSaveInstanceState();
//恢复以前的状态(包括选定的项目索引和滚动位置)
listView.onRestoreInstanceState(state);
即使将适配器设置为 -
,您也可以恢复上次保存的位置// Save the ListView state (= includes scroll position) as a Parceble
Parcelable state = listView.onSaveInstanceState();
// e.g. set new items
listView.setAdapter(adapter);
// Restore previous state (including selected item index and scroll position)
listView.onRestoreInstanceState(state);
您还可以参考here了解更多详情。
答案 1 :(得分:2)
当您点击SELECT d.NAME
,ROUND(SUM(mf.size) * 8 / 1024, 0) Size_MBs
,(SUM(mf.size) * 8 / 1024) / 1024 AS Size_GBs
FROM sys.master_files mf
INNER JOIN sys.databases d ON d.database_id = mf.database_id
WHERE d.database_id > 4
GROUP BY d.NAME
ORDER BY d.NAME
行时,请保存在SharedPreference中的位置
$(function(){
window.editTweetvldtr = $("#frm-update-tweet").validate({
rules: {
....
},
messages: {
....
}
});
});
console.log( window.editTweetvldtr ); //return the obj
从ListFragment
- &gt;回来时使用此功能<shared_pref_object>.putInt("scroll_position",position);
OtherFragment
将其设置为滚动位置:
ListFragment
答案 2 :(得分:0)
我真的很想知道为什么这个常见问题没有好的和优化的解决方案。正如我所看到的,每个人都以自己的方式解决了这个问题。但在尝试所有这些之后我想表达自己的方式:
在ListFragment中声明两个int变量来保存滚动位置:
TypedValue.COMPLEX_UNIT_SP
然后覆盖onPause()和onResume()以保存和恢复public static class MyListFragment extends ListFragment {
private int listIndex = -1;
private int listTop = 0;
的滚动位置,如下所示:
ListView
希望减轻痛苦! :脸红: