调用ArrayAdapter的AlertDialog后刷新活动

时间:2014-05-18 11:15:04

标签: android android-arrayadapter alertdialog

我从ArrayAdapter调用我的特定Activity,其中显示了我的数据库中的数据集列表。如果用户点按ArrayAdapter的项目,则会打开AlertDialog的扩展名。如果用户点击此AlertDialog中的按钮,则数据库中的数据集将被删除,AlertDialogdismiss()。现在我想刷新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 ......

1 个答案:

答案 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();
        }