2017-05-08 58 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

相关问题