2017-05-08 93 views
0

我有每個項目內的按鈕一個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是點擊項目的正確位置)!!

+0

我認爲你需要設置視圖的標籤,使用'setTag'(在適配器的bindView或getView方法,說其設置的位置),然後提取標籤,使用' onClickItemButton方法中的getTag。 – MikeT

回答

0

getSelectedItemPosition

返回的 適配器的數據中當前所選項目的位置設置

你應該列表視圖中使用此onItemClick方法。

getSelectedItemPosition() always return -1

+0

pos(點擊的項目)已正確返回,我的問題不是這樣,是SETTING選定的項目... listView.setSelection(pos); listView.setItemChecked(POS,TRUE);等等... – sgm

相關問題