我遇到了我創建的ListView問題:我想要一個項目在我點擊它時被選中。Android ListView:如何選擇一個項目?
我給這家代碼如下所示:
protected void onResume() {
...
ListView lv = getListView();
lv.setOnItemSelectedListener(new OnItemSelectedListener()
{
public void onItemSelected(AdapterView<?> adapterView, View view, int pos, long id) {
Log.v(TAG, "onItemSelected(..., " + pos + ",...) => selected: " + getSelectedItemPosition());
}
public void onNothingSelected(AdapterView<?> adapterView) {
Log.v(TAG, "onNothingSelected(...) => selected: " + getSelectedItemPosition());
}
});
lv.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> adapterView, View view, int pos, long id) {
lv.setSelection(pos);
Log.v(TAG, "onItemClick(..., " + pos + ",...) => selected: " + getSelectedItemPosition());
}
});
...
}
當我運行這一點,例如點擊在第二項(即POS = 1),我得到:
04-03 23:08:36.994: V/DisplayLists(663): onItemClick(..., 1,...) => selected: -1
即即使OnItemClickListener被調用合適的參數,並調用爲setSelection(1),沒有選擇的(因此也OnItemSelectedListener項目。 onItemSelected(...)永遠不會被調用),getSelectedItemPosition()在setSelection(1)調用後仍然返回-1。
我錯過了什麼?
邁克爾
PS:我的目錄確實有> = 2元......
爲什麼這是低調,完全是?它解決了getSelectedItemPosition()的海報問題永遠不會改變。是的,如果他想要的只是有問題的項目,那麼onItemClick()中的getItemAtPosition肯定更容易。然而,choiceMode能夠**顯示用戶當前選擇哪個項目,以及讓程序員訪問它。 – JRaymond 2012-04-04 15:08:41
我添加了選擇模式(兩種變體),但沒有改變! OnItemClickListener仍然不會被調用。即使我在屏幕上看到一個反應,即該物品很快變成紫色,然後又變回白色。 奇怪的是,我可以通過點擊向上和向下按鈕(然後調用OnIemSelectListener)來選擇項目,但顯然不通過OnItemClickListener。 – mmo 2012-04-04 20:55:18
等等,所以OnItemClick永遠不會被調用? OnItemSelect偵聽器僅針對觸控板/ up up東西配置 - 它不響應點擊,我不知道它是否會響應setSelection的手動撥號 – JRaymond 2012-04-04 21:01:34