我在FrameLayout活动中有一个listView(不是列表Activity)。
我可以使用checkbox.setOnCheckedChangeListener(this)
如何确定点击了哪个复选框?我没有得到任何索引。
ps OnListItemClicked
超出了范围,因为我没有使用ListActivity
答案 0 :(得分:1)
您可以实现onListItemClickListener()。迭代所有listview项并检查每个项目(每个项目子视图)。
for(int i = 0; i <= listView.getLastVisiblePosition(); i++)
{
if(listView.getChildAt(i)!= null)
{
if(((CheckBox)listView.getChildAt(i).findViewById(R.id.checkbox)).isChecked())
{
//do something
}else { //do something else}
}
}
或者,如果选中了项目复选框,则可以签入getView()
方法。
答案 1 :(得分:1)
做这样的事情
Vector vect = new Vector();
lv1.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_multiple_choice, item));
lv1.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
lv1.setClickable(true);
lv1.setScrollingCacheEnabled(true);
lv1.setOnItemClickListener(deleteclicklistener);
private OnItemClickListener deleteclicklistener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View v, int position,
long id) {
if(vect.contains(position))
{
vect.removeElement(position);
}else
{
vect.addElement(position);
}
}
};
我认为这应该可以解决你的问题
答案 2 :(得分:0)
ListView仍然有一个setOnListItemClickedListener()方法,您可以将侦听器创建为对象并将其传入,而不是在您的“活动”上下文中实现它。
编辑:是的,它从AdapterView继承。
转到ListView docs向下滚动到“继承的方法”部分,然后单击AdapterView左侧的箭头,您将找到setOnItemClickListener()。在我保证它存在之前,我已经在代码中使用过它。
答案 3 :(得分:0)
尝试使用listView1.getCheckedItemPosition()
。您也可以尝试这样做:
private int checkedItemPosition;
listView1.setOnItemClickListener(new ListView.OnItemClickListener()
{
public void onItemClick(AdapterView<?> listView, View selectedItem, int position, long itemId)
{
CheckBox checkbox = (CheckBox)selectedItem.findViewById(R.id.checkbox);
if (checkbox.isChecked())
{
checkedItemPosition = position;
}
}
});