使用此代碼,在setSelection指令後執行System.out.println時,返回-1,我不知道爲什麼。應用到ListViewListView的getSelectedItemPosition()返回-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);
}
});
}
getCount將()函數返回一個正確的值:2
我已經搜索找到一個解決辦法,但我已閱讀並測試不能解決所有問題。
UPDATE:
此代碼:關於主要活動
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,但下一個Activities中的相同代碼返回-1,爲什麼?我無法理解它。
我認爲lv.getSelectedItemPosition()將在listview.onitemselectedlistener工作... – 2015-04-02 10:34:36