いくつか検索しましたが、このフォーラムの質問はどれも私のものと一致しないようです。
私が達成しようとしていること:
アプリ
にリスト ビューがあります。アイテムを選択すると、アプリがそのアイテムが何であるかを読み取り、それに応じてやりたいことを実行できるようにしたいと考えています。
私が作っているアプリは、テキストベースの RPG ゲームです。たとえば、ショップに入ると、リスト ビュー内に 100 ゴールドの「ブロンズ ヘルメット」が表示されます。ブロンズ ヘルメットをクリックしたときに、「ユーザーがブロンズ ヘルメットをクリックした場合、そのユーザーのお金から 100 ゴールドを引いて、彼にヘルメットを渡すことができます」と理解できるようにしたいと考えています。
私が試したこと:
if (MeleeArmourList.getItemAtPosition(1).toString() == "(100G) Bronze Helmet") {
int gold Integer.parseInt(textViewShopGoldValue1.getText().toString()) - 100;
textViewShopGoldValue1.setText("" + gold);
}
これで完璧に動作します。しかし、何が起こっているかを示すために、さらに数行のコードを示します。
if (MeleeArmourList.getItemAtPosition(2).toString() == "(250G) Bronze Chestplate") {
int gold = Integer.parseInt(textViewShopGoldValue1.getText().toString()) - 250;
textViewShopGoldValue1.setText("" + gold);
}
if (MeleeArmourList.getItemAtPosition(3).toString() == "(125G) Bronze Leggings") {
int gold = Integer.parseInt(textViewShopGoldValue1.getText().toString()) - 125;
textViewShopGoldValue1.setText("" + gold);
}
if (MeleeArmourList.getItemAtPosition(4).toString() == "(100G) Bronze Boots") {
int gold = Integer.parseInt(textViewShopGoldValue1.getText().toString()) - 100;
textViewShopGoldValue1.setText("" + gold);
}
「ブロンズ ヘルメット」をクリックすると、ヘルメットから 100 ゴールドだけでなく、チェストプレート、レギンスなどからもゴールドが差し引かれます...
私の質問は次のとおりです:
アプリに1行だけを個別に読み取らせ、選択した文字列と比較させるにはどうすればよいですか? 「getSelectedItem()」も試しましたが、nullPointerException が発生します。
何か案は?
編集
MeleeArmourList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
if (MeleeArmourList.getSelectedItemPosition() == 1) {
int gold = Integer.parseInt(textViewShopGoldValue1
.getText().toString()) - 100;
textViewShopGoldValue1.setText("" + gold);
}
}
});