Как заполнить alerttdialog из значений, запрашиваемых из базы данных? - PullRequest
0 голосов
/ 25 сентября 2011

Прямо сейчас я могу видеть выбранные значения только когда я нажимаю кнопку OK в диалоговом окне. Но я хочу видеть это, когда появляется алертиалдиалог. Я знаю, что поместил код дисплея в .setPositiveButton («ОК», но даже когда я пытался поставить его до этого, он не работал. знаете, как. Пожалуйста, помогите мне.

enter code here
private void populateFields() {
    LayoutInflater inflater=LayoutInflater.from(this);
    final View addView=inflater.inflate(R.layout.add_country, null);

    new AlertDialog.Builder(this)
    .setTitle("Edit country/year")
    .setView(addView)
    .setPositiveButton("OK", 
    new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog,int whichButton) {
    Cursor c = 
         getContentResolver().query                                                                   (CONTENT_URI.buildUpon                                             ().appendPath(String.valueOf(mRowId)).build(), null, null, null, null);
    /* Read alert input */
    EditText editCountry =(EditText)addView.findViewById(R.id.editCountry);
    EditText editYear =(EditText)addView.findViewById(R.id.editYear);
    //System.out.println(c.getString(c.getColumnIndex("country")));
    editCountry.setText(c.getString(c.getColumnIndex("country")));
    editYear.setText(c.getString(c.getColumnIndex("year")));
                }
                })
    .setNegativeButton("Cancel",
        new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog,int whichButton) {
      // ignore, just dismiss
    }
})
    .show();
}

1 Ответ

3 голосов
/ 25 сентября 2011

Попробуйте поставить свой код сразу после того, как вы раздули представление. Примерно так:

private void populateFields() {
LayoutInflater inflater=LayoutInflater.from(this);
final View addView=inflater.inflate(R.layout.add_country, null);

Cursor c = getContentResolver().query(CONTENT_URI.buildUpon().appendPath(String.valueOf(mRowId)).build(), null, null, null, null);
/* Read alert input */
EditText editCountry =(EditText)addView.findViewById(R.id.editCountry);
EditText editYear =(EditText)addView.findViewById(R.id.editYear);

editCountry.setText(c.getString(c.getColumnIndex("country")));
editYear.setText(c.getString(c.getColumnIndex("year")));

new AlertDialog.Builder(this)
.setTitle("Edit country/year")
.setView(addView)
.setPositiveButton("OK",null)
.setNegativeButton("Cancel",null)
.show();
}
...