我有每個項目內的按鈕一個ListView,並與被配置:的Android ListView的設置中選擇在項目的按鈕點擊的
android:choiceMode="singleChoice"
android:focusable="true"
android:focusableInTouchMode="true"
android:listSelector="#AAAAAA"
在佈局中,按鈕的onclick被定義爲onClickItemButton。
獲取項目的位置正在工作,問題是設置所選項目。
問題是:如果我單擊一個項目,在按鈕之外,該項目將被選中並且背景顏色會發生變化。但是,如果我點擊該項目的按鈕,該項目將被取消選擇!
public void onClickItemButton(View view) {
View item = (View) view.getParent();
int pos = listView.getPositionForView(item);
long id = listView.getItemIdAtPosition(pos);
/* here I try to set the selected item, note that 'pos' is correctly defined*/
String sel = String.valueOf(listView.getSelectedItemPosition());
Toast.makeText(getBaseContext(),"clicked pos="+String.valueOf(pos)+"selected pos="+sel,Toast.LENGTH_SHORT).show();
}
我曾嘗試以下代碼在/ *這裏我嘗試設置所選項目*/
1) listView.setSelection(pos);
2) listView.setItemChecked(pos,true);
3)int id = Integer.parseInt(v.getText().toString());
listView.performItemClick(view,pos,id);
但我總是得到 「點擊POS = N選擇POS = -1」,並沒有項目突出顯示(其中N是點擊項目的正確位置)!!
我認爲你需要設置視圖的標籤,使用'setTag'(在適配器的bindView或getView方法,說其設置的位置),然後提取標籤,使用' onClickItemButton方法中的getTag。 – MikeT