1

我有一个ListView持有一定数量的名称,当我从ListView中点击一个项目时我想要一个ListDialog弹出来显示数据库中的某些数据。那可能吗?是否可以从数据库填充列表对话框?

如果在单击列表对话框中的某个项目后出现“是”(如果可能的话),那么是否有另一个列表对话框会出现?像列表对话框嵌套?

非常感谢!

回答

0

是的。只需要一个新的DialogFragment调用一些带有一些参数的newInstance()来指定你想要的。

在列表活动:

@Override 
public void onListItemClick(ListView l, View v, int position, long id) { 
    Cursor c = (Cursor) this.getListAdapter().getItem(position); 
    int index = c.getInt(c.getColumnIndexOrThrow(COLUMN_NAME)); 
    DialogFragment newFragment = MyDialogFragment.newInstance(index); 
    newFragment.show(getFragmentManager(), "dialog"); 
} 

在你DialogFragment类:

static MyDialogFragment newInstance(int index) { 
    MyDialogFragment f = new MyDialogFragment(); 
    Bundle args = new Bundle(); 
    args.putInt("index", index); 
    f.setArguments(args); 
    return f; 
} 

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    int index = getArguments().getInt("index"); 
    AlertDialog.Builder builder; 
    Dialog dialog; 
    builder = new AlertDialog.Builder(getActivity()); 
    final Cursor c = someDatabaseHelper.getData(index); 
    builder.setCursor(c, new OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      c.moveToPosition(which); 
      int idWeWant = c.getInt(c.getColumnIndexOrThrow(STRING_ID_WE_WANT)); 
      //you can make another dialog here using the same method 
     } 
    }); 
    dialog = builder.create(); 
    return builder.create(); 
}