Java ListView.setSelection不起作用

Java ListView.setSelection不起作用,java,android,listview,Java,Android,Listview,我有一个带有自定义适配器的ListView。当我旋转屏幕时,它总是转到第一个位置。我试着保存最后一个位置,然后在正确的位置设置位置,但现在没有运气 一段代码 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View root = inflater.inflate(R.layout.fragment_wo

我有一个带有自定义适配器的ListView。当我旋转屏幕时,它总是转到第一个位置。我试着保存最后一个位置,然后在正确的位置设置位置,但现在没有运气

一段代码

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View root = inflater.inflate(R.layout.fragment_words, container, false);
    lvIrregularVerbs = (ListView) root.findViewById(R.id.lvSimple);
    if (savedInstanceState != null) {
        lastposition=savedInstanceState.getInt("position");
    }
    fulllist(lst);
    irregularVerbsAdapter = new IrrVerbsAdapter(getActivity(), lst, MainActivity.db);
    lvIrregularVerbs.setAdapter(irregularVerbsAdapter);
    lvIrregularVerbs.setOnItemClickListener(new OnItemClickListener() {
        @SuppressWarnings("deprecation")
        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
        //some stuff


        }
    });
    lvIrregularVerbs.setSelection(lastposition);
    return root;    
}

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putInt("position", lvIrregularVerbs.getLastVisiblePosition());
}
@覆盖
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图根=充气机。充气(R.layout.fragment\u单词,容器,false);
lvid=(ListView)root.findViewById(R.id.lvSimple);
如果(savedInstanceState!=null){
lastposition=savedInstanceState.getInt(“位置”);
}
完整列表(lst);
unregularVerbsAdapter=新的IRServerBSAdapter(getActivity(),lst,MainActivity.db);
lvunregularVerbs.setAdapter(unregularVerbsAdapter);
lvverbs.setOnItemClickListener(新的OnItemClickListener(){
@抑制警告(“弃用”)
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
//一些东西
}
});
lv.setSelection(lastposition);
返回根;
}
@凌驾
SaveInstanceState上的公共无效(束超出状态){
super.onSaveInstanceState(超出状态);
outState.putInt(“position”,lvverbs.getLastVisiblePosition());
}
但是如果我在一个参数中设置一个常数,一切都会正常。
我已经查看并尝试了所有操作,但不知道该做什么。

尝试将您的选择代码发布到其他地方-在onResume中或尝试调用new Handler().post(new Runnable(){..run(){list.setPosition(pos);})

你确定你正确地设定了这个值吗?请打印出来。设置
lastposition
的代码缺失。@greenapps好吧,我已将lastposition设置在lvinverties=(ListView)root.findViewById(R.id.lvSimple);。如果这就是你的意思。@RobertoNicbaAnićBanić当我在片段被销毁后调试它时,我总是看到正确的lastposition值。你是在onCreate中调试还是在OnDestroyedNoResults中调试,但我发现onCreateView被调用了两次,因为lastposition=0 SetSelection不起作用。可能是MainActivity.java的问题。您如何存储上一个位置?我的方法似乎运行良好,将其存储到onPause中fragment的参数中,并在onResume中恢复。。类似于getArguments().putInt(POS_键,mListView.getFirstVisiblePosition());