1
我有一個ListView持有一定數量的名稱,當我從ListView中點擊一個項目時我想要一個ListDialog彈出來顯示數據庫中的某些數據。那可能嗎?是否可以從數據庫填充列表對話框?
如果在單擊列表對話框中的某個項目後出現「是」(如果可能的話),那麼是否有另一個列表對話框會出現?像列表對話框嵌套?
非常感謝!
我有一個ListView持有一定數量的名稱,當我從ListView中點擊一個項目時我想要一個ListDialog彈出來顯示數據庫中的某些數據。那可能嗎?是否可以從數據庫填充列表對話框?
如果在單擊列表對話框中的某個項目後出現「是」(如果可能的話),那麼是否有另一個列表對話框會出現?像列表對話框嵌套?
非常感謝!
是的。只需要一個新的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();
}