Hallo,
ich möchte den User per DialogFragment/AlertDialog aus einer Liste ein Item auswählen lassen. Die Liste mit eigenem Layout steht und wird angezeigt, soweit alles gut. Aber ich habe keine Ahnung, wie ich auf das ausgewählte Item zugreifen soll.
Bei einer ListActivity, die mit einem SimpleCursorAdapter mit Daten aus einer Datenbank gefüllt wurde, habe ich die Möglichkeit per
die ID des angeklickten Items abzurufen.
DialogFrament bietet mir aber nur
an, womit ich die Nummer des angeklickten Buttons erhalte, die eben nicht die ID des jeweiligen Items ist.
Die Frage ist also, wie ich entweder einen onListItemClickListener einbinden oder über die Nummer aus which auf die ID zugreifen kann, damit ich mit dieser ID weiterarbeiten kann?
Mein DialogFragment, falls das von Interesse ist.
ich möchte den User per DialogFragment/AlertDialog aus einer Liste ein Item auswählen lassen. Die Liste mit eigenem Layout steht und wird angezeigt, soweit alles gut. Aber ich habe keine Ahnung, wie ich auf das ausgewählte Item zugreifen soll.
Bei einer ListActivity, die mit einem SimpleCursorAdapter mit Daten aus einer Datenbank gefüllt wurde, habe ich die Möglichkeit per
Code:
onListItemClick(ListView l, View v, int position, long id)
DialogFrament bietet mir aber nur
Code:
onClick(DialogInterface dialog, int which)
Die Frage ist also, wie ich entweder einen onListItemClickListener einbinden oder über die Nummer aus which auf die ID zugreifen kann, damit ich mit dieser ID weiterarbeiten kann?
Mein DialogFragment, falls das von Interesse ist.
Java:
public class SingleCoiceListDialogFragment extends DialogFragment {
SimpleCursorAdapter mAdapter;
/* The activity that creates an instance of this dialog fragment must
* implement this interface in order to receive event callbacks. */
public interface SingleChoiceListener {
public void onItemSelected(DialogFragment dialog, int which);
public void onListItemClick(ListView l, View v, int position, long id);
}
// Use this instance of the interface to deliver action events
SingleChoiceListener mSingleChoiceListener;
// Override the Fragment.onAttach() method to instantiate the listener
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
// Verify that the host activity implements the callback interface
try {
// Instantiate the listener so we can send events to the host
mSingleChoiceListener = (SingleChoiceListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement NoticeDialogListener");
}
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater layoutInflater = getActivity().getLayoutInflater();
Bundle args = getArguments();
DialogInterface.OnClickListener onClickListener = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// The 'which' argument contains the index position
// of the selected item
mSingleChoiceListener.onItemSelected(SingleCoiceListDialogFragment.this, which);
}
};
Log.i("fragment", String.valueOf(args.containsKey("title")));
builder.setTitle(args.getString("title"));
builder.setView(layoutInflater.inflate(args.getInt("layout"), null));
builder.setAdapter(mAdapter, onClickListener);
return builder.create();
}
public void setAdapter(SimpleCursorAdapter adapter) {
mAdapter = adapter;
}