问题描述
我在每个item.I想要一个删除按钮,当按钮pressed要从数据删除的项(包含HashMap的ArrayList)一个ListView和ListView控件太解雇。
I have a ListView with a delete button on each item.I want when the button is pressed the item to be removed from data(An ArrayList of HashMaps) and dismiss from ListView too.
下面是我的code:
BaseAdapter:
BaseAdapter:
public class MyCustomAdapter extends BaseAdapter{
private ArrayList<HashMap<String, Object>> list;
private Context context;
public MyCustomAdapter(ArrayList<HashMap<String, Object>> list,Context context){
this.list = list;
this.context = context;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = convertView;
if(view == null){
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.addresslist_item, null);
TextView address = (TextView) view.findViewById(R.id.listtxtaddress);
String add = String.valueOf(list.get(position).get("address"));
address.setText(add);
Button btndelete = (Button) view.findViewById(R.id.listbtndelete);
btndelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("check", "item_positiona:"+position);
Log.d("check", "lista:"+list.toString());
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Τιτλος επιχειρησησης");
builder.setMessage("Θέλετε να διαγάρψετε αυτή τη διεύθυνση;");
builder.setNegativeButton("NAI", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
Log.d("check", "item_positionb:"+position);
list.remove(position);
notifyDataSetChanged();
}
});
builder.setPositiveButton("AKYPO", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
AlertDialog abc = builder.create();
abc.show();
}
});
}
return view;
}
}
我的问题是,该项目是从数据中删除,但ListView的时候是只更新了最后一个项目被删除,而不是项目,我select.Any想法,为什么出现这种情况?先谢谢了。
My problem is that the item is removed from data but the when ListView is update only the last item is removed and not the item that i select.Any ideas why this happening? Thanks in Advance.
推荐答案
您可以尝试也这样..
创建一个Listener接口
You can try this way also..Create a Listener interface
package xyz.listeners;
public interface DeleteClickListener {
public void onDeleteClick(int position);
}
比你们actvity /片段有列表视图 -
Than in your actvity/fragment that has listview-
private DeleteClickListener mDeleteClickListener;
mDeleteClickListener = new DeleteClickListener() {
@Override
public void onDeleteClick(int position) {
list.remove(position);
adapter.notifyDataSetChanged();
}
};
在您的适配器类构造器中传递的监听器。
In your adapter class contructor pass that listener.
public MyCustomAdapter(ArrayList<HashMap<String, Object>> list,Context context,DeleteClickListene mDeleteClickListener){
this.list = list;
this.context = context;
deleteClickListener=mDeleteClickListener;
}
然后删除按钮的onClick
and then onClick of Delete button
builder.setNegativeButton("NAI", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
deleteClickListener.onDeleteClick(position);
}
});
这篇关于刷新的ListView与BaseAdapter的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!