У меня есть пользовательский диалог с одним видом редактирования и двумя кнопками в порядке и отмена. У меня есть представление пользовательского списка, отображающее некоторые строки данных, извлеченных из базы данных. Когда пользователь нажимает на строку списка, пользовательское диалоговое окно отображается пользователю для редактирования выбранной строки. То, что я хочу сделать, - это передать объект, привязанный к выбранной строке, в диалоговое окно, чтобы я мог отображать редактируемые данные.Как передать переменную или объект в диалоговом окне в android
Вот мой класс активности:
public class TestDatabaseActivity extends ListActivity {
private CommentsDataSource datasource;
private CommentAdapter adt;
static final int CUSTOM_DIALOG_ID = 0;
private TextView dialog_editComment;
private EditText dialog_txtEditComment;
private Button dialog_btnOk, dialog_btnCancel;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
datasource = new CommentsDataSource(TestDatabaseActivity.this);
datasource.open();
getList();
}
private void getList()
{
List<Comment> values = datasource.getAllComments();
adt=new CommentAdapter(TestDatabaseActivity.this,R.layout.comment_row,values);
setListAdapter(adt);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
CommentAdapter adapter= (CommentAdapter) getListAdapter();
final Comment cmt = adapter.mListComment.get(position);
System.out.println(cmt.getId()+cmt.getComment());
//cmt is the object which i want to pass to my dialog
showDialog(CUSTOM_DIALOG_ID);
}
private Button.OnClickListener customDialog_UpdateOnClickListener = new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
//save the value and update list
}
};
private Button.OnClickListener customDialog_DismissOnClickListener
= new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
dismissDialog(CUSTOM_DIALOG_ID);
}
};
@Override
protected Dialog onCreateDialog(int id) {
// TODO Auto-generated method stub
Dialog dialog = null;;
switch(id) {
case CUSTOM_DIALOG_ID:
dialog = new Dialog(TestDatabaseActivity.this);
dialog.setContentView(R.layout.comment_edit_dialog);
dialog.setTitle("Edit");
dialog_editComment = (TextView)dialog.findViewById(R.id.editComment);
dialog_txtEditComment = (EditText)dialog.findViewById(R.id.txtComment);
dialog_btnOk = (Button)dialog.findViewById(R.id.btnOk);
dialog_btnCancel = (Button)dialog.findViewById(R.id.btnCancel);
dialog_btnOk.setOnClickListener(customDialog_UpdateOnClickListener);
dialog_btnCancel.setOnClickListener(customDialog_DismissOnClickListener);
break;
}
return dialog;
}
}
могли бы вы дать мне пример того, как сделать так – rockstar
я попробовал это, но в строке dialog_editComment = (TextView) dialog.findViewById (R.id.editComment); Я получаю сообщение об ошибке, как метод findViewById не определен для типа AlertDialog.Builder – rockstar
, пожалуйста, перепроверьте теперь замененный диалог с представлением в нескольких плагинах. – Ishu