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);
}
});