Android ListView.setSelection不工作

Android ListView.setSelection不工作,android,android-listview,android-arrayadapter,android-dialog,Android,Android Listview,Android Arrayadapter,Android Dialog,我正在处理一个具有列表视图的对话框 我已成功地将适配器、选择器、列表项布局放入onCreate()中,如下所示 protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.variable_dialog); lv=(ListVi

我正在处理一个具有
列表视图的对话框

我已成功地将适配器、选择器、列表项布局放入
onCreate()
中,如下所示

protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

    setContentView(R.layout.variable_dialog);

    lv=(ListView) findViewById(R.id.VariableslistView1);
    lv.setAlwaysDrawnWithCacheEnabled(true);        
    final ArrayAdapter<String> ad=new ArrayAdapter<String>(getContext(),android.R.layout.simple_list_item_1,Program.get().symboltable.getSymbols());
    lv.setAdapter(ad);

    lv.setSelector(R.drawable.item_selected);
这是我的选择:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
 <stroke
    android:width="2dp"
    android:color="#FF00FF00" />

<gradient
    android:angle="225"
    android:endColor="#DD2ECCFA"
    android:startColor="#DD000000" />

<corners
    android:bottomLeftRadius="7dp"
    android:bottomRightRadius="7dp"
    android:topLeftRadius="7dp"
    android:topRightRadius="7dp" />


</shape>

看在上帝的份上,到底怎么了

我甚至尝试了
AdapterView.OnItemSelectedListener
,但从未成功:|

谁能告诉我出了什么问题

提前感谢

我遇到了同样的问题(在
notifyDataSetChanged()
之后立即调用了
setSelection()
),这最终帮助了我:

    lv.post(new Runnable() {

        @Override
        public void run() {
            lv.setSelection(mSelectedPosition);
        }
    });

对于任何遇到listView.setSelection(int位置)似乎不起作用的问题的人来说,对我来说一件事是确保在我更新listView适配器后运行此代码。如果在完成之前尝试执行此操作,则一旦完成listView更新,滚动位置将完全不在所需位置

在极端情况下,您可能需要输入一个类似MiroM find的runnable,但这通常不是必需的。祝你好运

listView.post(new Runnable() {
    @Override
    public void run() {
                listView.clearFocus();
                listViewAdapter.notifyDataSetChanged();
                listView.requestFocusFromTouch();
                listView.setSelection(focusPosOnline);
    }
});

以上内容对我有效

检查这可能有帮助它给了我一些分数,但问题尚未解决。。当我调用getSelectedItemPosition时,我仍然得到-1:(完成后,我只需放入一个表示所选项目的全局变量,并使用onItemClickedListener对其进行更新:)谢谢@Raghunand您尝试设置选择模式,例如:listView.setChoiceMode(listView.choice\u mode\u SINGLE);
listView.post(new Runnable() {
    @Override
    public void run() {
                listView.clearFocus();
                listViewAdapter.notifyDataSetChanged();
                listView.requestFocusFromTouch();
                listView.setSelection(focusPosOnline);
    }
});