我从ArrayAdapter
调用我的特定Activity
,其中显示了我的数据库中的数据集列表。如果用户点按ArrayAdapter
的项目,则会打开AlertDialog
的扩展名。如果用户点击此AlertDialog
中的按钮,则数据库中的数据集将被删除,AlertDialog
为dismiss()
。现在我想刷新ArrayAdapter
的视图。
我找到了像
这样的解决方案remove(position);
notifyDataSetChanged();
但我在哪里可以称之为?我可以将AlertDialog
向后传递给ArrayAdapter
的布尔值,如果用户点击特定按钮说出&#34;嘿适配器,请删除列表中的当前项目&#34;?< / p>
这里有一些代码:
的活动:
final ListView list = (ListView) findViewById(R.id.myList);
DBhandler db = new DBhandler (context);
list.setAdapter(new MyAdapter(context, db.getMyItems()))
MyAdapter:
public View getView(int position, View row, ViewGroup parent) {
if(row != null) {
row.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
final MyDialog myDialog = new MyDialog(context, currentItem);
myDialog.show();
}
});
}
}
MyDialog:
protected void onCreate(Bundle savedInstanceState) {
Button btn_delete = (Button) findViewById(R.id.btn_delete);
btn_delete.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
DBhandler db = new DBhandler (context);
db.delete(currentItem);
Toast.makeText(context, "item is deleted", Toast.LENGTH_SHORT).show();
dismiss();
}
});
}
我也找到了Passing Events Back to the Dialog's Host,但我不知道如何将它用于我的AlertDialog ......
答案 0 :(得分:0)
您可以在取消警告对话框之前调用自定义适配器的功能
if(adapter.remove(postion)){
adapter.refreshdata();
}
和
这样的功能public boolean removedata(int position){
boolean isremoved = false;
// loop array data and remove specific item
// and return isRemoved value.
}
public void refreshdata(){
notifyDataSetChanged();
}