【发布时间】:2015-06-07 06:34:51
【问题描述】:
使用此代码,在 setSelection 指令后执行 System.out.println 时,返回 -1,我不知道为什么。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.composition);
lv = (ListView) findViewById(android.R.id.list);
cabecera = (TextView) findViewById(R.id.cabecera);
information = (TextView) findViewById(R.id.paciente);
proceso = new ArrayList<>();
proceso.add("- Item1");
proceso.add("- Item2");
adapter = new ArrayAdapter<String>(getApplicationContext(),R.layout.customizedlistitem,proceso);
lv.setAdapter(adapter);
lv.post(new Runnable() {
@Override
public void run() {
lv.setSelected(true);
lv.setSelection(0);
adapter.notifyDataSetChanged();
System.out.println("Selected Item onCreate: "+lv.getSelectedItemPosition());
System.out.println("Get Count en onCreate: "+lv.getCount());
}
});
nextBundle = new Bundle();
nextBundle.putString("name",proceso.get(position));
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
in = new Intent(getApplicationContext(),Check.class);
in.putExtras(nextBundle);
startActivity(in);
}
});
}
应用于ListView的getCount()函数返回正确的值:2
我已经寻找解决方案,但我阅读和测试的所有内容都没有解决问题。
更新:
这段代码:
listPacientes = new ArrayList<>();
listPacientes.add("Elemento 1");
listPacientes.add("Elemento 2");
listPacientes.add("Elemento 3");
adapter = new ArrayAdapter<String>(getApplicationContext(),R.layout.customizedlistitem,list);
lv.setAdapter(adapter);
lv.setSelection(1);
System.out.println(lv.getSelectedItemPosition());
适用于主要活动。 “System.out”返回 1,但下一个活动中的相同代码返回 -1,为什么?看不懂。
【问题讨论】:
-
我认为 lv.getSelectedItemPosition() 将在 listview.onitemselectedlistener 中工作...
标签: android listview selecteditem