2010-12-14 8 views
0

У меня есть ListActivity, что, когда вы нажимаете на элемент, он выдает диалог, который спрашивает пользователя для пользователя и пароль. Как получить выбранную позицию из диалогового окна?Acess AdapterView from Dialog

Вот как я инициализировать ListActivity:

protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 

ListView listView = getListView(); 
listView.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view, 
    int position, long id) { 
    showDialog(DIALOG_USER_PASSWORD); 
    } 
}); 
} 

Диалог я всплывал это простой AlertDialog с 2 EditText который я раздувать из файла XML

protected Dialog onCreateDialog(int id) { 
     switch (id) { 
     ... 
     case DIALOG_USER_PASSWORD: 
      LayoutInflater factory = LayoutInflater.from(this); 
         final View dialogView = factory.inflate(R.layout.alert_dialog_text_entry, null); 
         return new AlertDialog.Builder(MyListActivity.this) 
         .setIcon(R.drawable.alert_dialog_icon) 
         .setTitle(R.string.ask_user_password) 
         .setView(dialogView) 
         .setPositiveButton(R.string.ok_text, new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int whichButton) { 
        String userName = ((EditText) findViewById(R.id.username_edit_alert_dialog)) 
          .getText().toString(); 
        String password = ((EditText) findViewById(R.id.password_edit_alert_dialog)) 
          .getText().toString(); 
        Credentials cred = new CredentialsL1(userName, password); 

        /* HERE IS WHERE i NEED THE SELECTED ITEM 
        mId IS THE OBJECT ASSOCIATED TO THE SELECTED POSITION */ 
        mService.connect(mId, cred); 

        } 
       }) 
       // Cancel button 
       .setNegativeButton(R.string.cancel_text, 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int whichButton) { 
          dialog.cancel(); 
         } 
        }) 
       .create(); 
     } 
     return null; 
    } 

Единственное я пришел с созданием нового поля «mId» и установкой его, когда пользователь нажимает и использует его, когда пользователь вступает в ОК в диалоговом окне. Любая более элегантная идея? Благодаря

ответ

1
private int selectedPosition; 
... 
protected void onCreate(Bundle savedInstanceState) { 
.... 
// inside the item listener... 
selectedPosition = position; 
showDialog(DIALOG_USER_PASSWORD); 

/* HERE IS WHERE i NEED THE SELECTED ITEM 
mId IS THE OBJECT ASSOCIATED TO THE SELECTED POSITION */ 
// just use selectedPosition var 

Все более изящная идея?

кажется, что вы используете обычный ListView (не флажок один) ... так, это прекрасно, чтобы сделать это таким образом.