Android ListView多个复选框
我在FrameLayout活动(不是列表活动)中有一个listView 我可以使用Android ListView多个复选框,android,Android,我在FrameLayout活动(不是列表活动)中有一个listView 我可以使用checkbox.setOnCheckedChangeListener(this) 如何确定单击了哪个复选框?我没有任何索引 psOnListItemClicked超出范围,因为我没有使用ListActivity您可以实现onListItemClickListener()。迭代所有listview项并检查每个项(每个项子视图) for(int i=0;iListView仍然有一个setOnListItemClick
checkbox.setOnCheckedChangeListener(this)
如何确定单击了哪个复选框?我没有任何索引
ps
OnListItemClicked
超出范围,因为我没有使用ListActivity
您可以实现onListItemClickListener()。迭代所有listview项并检查每个项(每个项子视图)
for(int i=0;iListView仍然有一个setOnListItemClickedListener()方法,您只需将侦听器创建为一个对象并传入,而不是在活动上下文中实现它
编辑:是的,它从AdapterView继承
转到向下滚动到“继承的方法”部分,然后单击AdapterView左侧的箭头,您将找到setOnItemClickListener()。在确保它存在之前,我已经在代码中使用过它。尝试使用listView1.GetCheckEditePosition()
。您也可以尝试这样做:
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;
}
}
});
private int checkedItemPosition;
listView1.setOnItemClickListener(新的ListView.OnItemClickListener()
{
public void onItemClick(AdapterView列表视图、View selectedItem、int位置、长项目ID)
{
复选框=(复选框)选择editem.findviewbyd(R.id.CheckBox);
如果(checkbox.isChecked())
{
checkedItemPosition=位置;
}
}
});
像这样做
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);
}
}
};
Vector vect=new Vector();
lv1.setAdapter(新阵列适配器),
android.R.layout.simple_list_item_多项选择,item));
lv1.setChoiceMode(ListView.CHOICE\u MODE\u MULTIPLE);
1级。可设置可点击(真);
lv1.SetScrolingCacheEnabled(真);
lv1.setOnItemClickListener(deleteclicklistener);
私有OnItemClickListener deleteclicklistener=新建OnItemClickListener(){
@凌驾
公共视图单击(AdapterView arg0,视图v,内部位置,
长id){
if(向量包含(位置))
{
向量移除(位置);
}否则
{
矢量加法(位置);
}
}
};
我认为这应该可以解决您的问题if(((CheckBox)listView.getChildAt(I).findViewById(R.id.CheckBox)).isChecked())您可以简化为查看parentView=listView.getChildAt(I);CheckBox chkbox=(CheckBox)parentView.findViewById(R.id.CheckBox);if(chkbox.isChecked())我的意思是我不想循环所有的子项,应该有更好的方法。当然,在适配器中的getView()
方法中,您可以进行检查。行项目应该可以单独单击。将clickable设置为True会使checkbox+行项目成为可单击的项目。
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);
}
}
};