質問

アイテムをタップすると、ユーザーとパスワードをユーザーに尋ねるダイアログをポップアップするリストアクティビティがあります。ダイアログから選択した位置を取得するにはどうすればよいですか?

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);
  }
 });
}

私がポップアップするダイアログは、XMLファイルから膨張する2つのEdittextを備えたシンプルなAlertDialogです

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」を作成し、ユーザーがダイアログでOK OKをタップしたときにユーザーがタップしたときにそれを設定し、それを設定することです。これ以上エレガントなアイデアはありますか?ありがとう

役に立ちましたか?

解決

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(チェックボックスワンではありません)を使用しているようです。そのため、このようにしても問題ありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top