我有每个项目内的按钮一个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