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(); 
} 
相關問題