Android 如何从自定义Listview中删除项目
在我的Android 如何从自定义Listview中删除项目,android,android-listview,android-arrayadapter,Android,Android Listview,Android Arrayadapter,在我的列表视图中选择复选框时,我想从列表视图中删除项目。我的自定义适配器如下所示: public class listadapter extends ArrayAdapter<list> { private int resource; private LayoutInflater inflater; private Context context; // private final boolean[] mCheckedState; private final ArrayList&l
列表视图
中选择复选框时,我想从列表视图
中删除项目。我的自定义适配器
如下所示:
public class listadapter extends ArrayAdapter<list> {
private int resource;
private LayoutInflater inflater;
private Context context;
// private final boolean[] mCheckedState;
private final ArrayList<list> list;
private final Activity mcontext;
boolean checkAll_flag = false;
boolean checkItem_flag = false;
public listadapter(Activity context, ArrayList<list> list) {
super(context, R.layout.listdata, list);
this.mcontext = context;
this.list = list;
}
static class ViewHolder {
protected TextView text1;
protected TextView text2;
protected CheckBox checkbox;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if (convertView == null) {
LayoutInflater inflator = mcontext.getLayoutInflater();
convertView = inflator.inflate(R.layout.listdata, null);
viewHolder = new ViewHolder();
viewHolder.text1 = (TextView) convertView
.findViewById(R.id.textViewLat);
viewHolder.text2 = (TextView) convertView
.findViewById(R.id.textViewLng);
viewHolder.checkbox = (CheckBox) convertView
.findViewById(R.id.checkBoxList);
viewHolder.checkbox
.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
int getPosition = (Integer) buttonView.getTag();
// Here we get the position that we have set for the checkbox using setTag.
list.get(getPosition).setSelected(
buttonView.isChecked());
// Set the value of checkbox to maintain its state.
}
});
convertView.setTag(viewHolder);
convertView.setTag(R.id.textViewLat, viewHolder.text1);
convertView.setTag(R.id.textViewLng, viewHolder.text2);
convertView.setTag(R.id.checkBoxList, viewHolder.checkbox);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.checkbox.setTag(position); // This line is important.
viewHolder.text1.setText(list.get(position).getLat());
viewHolder.text2.setText(list.get(position).getLng());
viewHolder.checkbox.setChecked(list.get(position).isSelected());
return convertView;
}
公共类listadapter扩展了ArrayAdapter{
私有int资源;
私人充气机;
私人语境;
//私有最终布尔值[]mCheckedState;
私人最终阵列列表;
私人最终活动mcontext;
布尔checkAll_标志=false;
布尔checkItem_标志=false;
公共listadapter(活动上下文、ArrayList列表){
super(context,R.layout.listdata,list);
this.mcontext=上下文;
this.list=列表;
}
静态类视窗夹{
受保护的文本视图text1;
受保护的文本视图文本2;
受保护复选框;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
ViewHolder ViewHolder=null;
if(convertView==null){
LayoutFlater充气器=mcontext.getLayoutFlater();
convertView=充气机充气(R.layout.listdata,null);
viewHolder=新的viewHolder();
viewHolder.text1=(TextView)convertView
.findViewById(R.id.textViewLat);
viewHolder.text2=(TextView)convertView
.findViewById(R.id.textViewLng);
viewHolder.checkbox=(复选框)convertView
.findViewById(R.id.复选框列表);
viewHolder.checkbox
.setOnCheckedChangeListener(新建CompoundButton.OnCheckedChangeListener(){
@凌驾
检查更改后的公共无效(复合按钮视图,
布尔值(已检查){
int getPosition=(整数)buttonView.getTag();
//在这里,我们使用setTag获得为复选框设置的位置。
list.get(getPosition).setSelected(
buttonView.isChecked());
//设置复选框的值以保持其状态。
}
});
convertView.setTag(viewHolder);
setTag(R.id.textViewLat,viewHolder.text1);
setTag(R.id.textViewLng,viewHolder.text2);
setTag(R.id.checkBoxList,viewHolder.checkbox);
}否则{
viewHolder=(viewHolder)convertView.getTag();
}
viewHolder.checkbox.setTag(位置);//这一行很重要。
viewHolder.text1.setText(list.get(position.getLat());
viewHolder.text2.setText(list.get(position.getLng());
viewHolder.checkbox.setChecked(list.get(position.isSelected());
返回视图;
}
}
请指导我在选中
复选框时删除列表视图
中的项目需要做哪些更改,欢迎使用Stackoverflow。在这里提问时,,您需要描述您为解决问题所付出的努力。从列表中删除该项,然后在java活动中执行此操作notifydatasetchanged
@Egor我见过其他关于堆栈溢出的类似帖子,但它删除了第一项,然后给出了一个边界例外的数组,为什么不添加代码您已经习惯于问题描述而没有发布ArrayIndexOutOfBoundsException的堆栈跟踪?如果(this.list.size()!=0){CheckBox chk=(CheckBox)convertView.findViewById(R.id.checkBoxList);如果(chk!=null){chk.setId(position);chk.setOnClickListener(new AdapterView.OnClickListener()){@Override public void onClick(View v){int id=v.getId();list.remove(id);notifyDataSetChanged();}}}}}