私は、警告ダイアログボックスで選択した特定のアイテムを別のクラスに表示し、価格として追加するための対応する値を取得しようとしています。私はそれが何が選択されているかを示したい。私はforループが間違っていることを知っています。何がそこに行かなければならないので、私はハッシュセットの位置の値に配列を持っています。ハッシュセットの特定の整数を取得
final String[] OptionsStringARR = {"Babysit", "Snorkelling", "Test1", "Test2"};
final int[] OptionsPricingARR = {10, 35, 14, 9};
final ArrayList OptionssSelected = new ArrayList();
final HashSet<Integer> optset = new HashSet<>();
boolean[] checked= {false,false,false,false};
public class OptionClass implements View.OnClickListener {
@Override
public void onClick(View v) {
new AlertDialog.Builder(ibMap.this)
.setTitle(guidedetail.getText() + " available options.")
.setMultiChoiceItems(OptionsStringARR, checked,
new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int selectedItemId,
boolean isSelected) {
if (isSelected) {
checked[selectedItemId]=true;
optset.add(selectedItemId);
} else if (optset.contains(selectedItemId)) {
checked[selectedItemId]=false;
optset.remove(Integer.valueOf(selectedItemId));
}
}
})
//.setMessage("//I need to put shit here. Array lists maybe. and check boxes")
.setCancelable(true)
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
}
)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//optset.addAll(OptionssSelected);
dialog.dismiss();
}
}
).create().show();
}
}
Iは、次いで、2つの配列及びそれらが何であるかを定義するHashSetの、選択されたかを決定するためのHashSetの、情報を含むアレイを使用しています。
public class ConfirmClass implements View.OnClickListener {
@Override
public void onClick(View v) {
int TotalOpt=0;
for (int j = 0; j < optset.size(); j++){
int[] y = new int[optset.size()];
int x = y[j];
TotalOpt=TotalOpt+ OptionsPricingARR[x];
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < optset.size(); i++) {
if (i > 0) {
sb.append(", ");
}
sb.append(OptionsStringARR[i]);
}
new AlertDialog.Builder(ibMap.this)
.setTitle(guidedetail.getText())
.setMessage("Options Selected: " + sb +
"\nTotal: "+ TotalOpt)
.setCancelable(true)
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
}
)
.setPositiveButton("Confirm", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
startActivity(new Intent(ibMap.this, confirm.class));
}
}
).create().show();
}
}
ありがとうございます!また、alertdialog経由でオプションの価格を表示するのを助けることができればそれは素晴らしいでしょう!
ようこそスタックオーバーフロー..私は
static
初期化子ブロックを使用している理由です、あなたのアプリケーションのオプションが固定されていることを前提としています。 *たくさんのコードを投稿しましたが、 "ハッシュセットで特定のintを取得する"と何か関係があり、あなたの説明は不明です。理想的には[mcve]として、達成しようとしていることの最小限の例にコードを縮小してください。あなたの問題がAndroidやユーザーインターフェイスの要素に固有のものでない限り、私はコンソールアプリケーションでそれを実証しようとしますが、コピー/貼り付け/コンパイル/実行しかできません。 –