私はスピナーアンドロイドで、特にデータ保存部で問題があります。Android SpinnerがIDを正しく返さない
まず、以下のコードの目的は何かを説明します。
私はあなたが購入する惑星を選択できるスピナーを作成したいと思います。その後、送信ボタンを押すと、「購入したかった:....」というトーストが表示され、購入が続きますユーザー名&のような要約。
しかし、プロセスの途中で、各スピンナーの要素のIDを保存するのに苦労しています。
「Earth」(id = 1)&ヒットサブミットを選択するたびに、トーストは常にid = 0の「Mars」を参照します。問題は私の送信ボタンが常に選択されたID。
意図的にintを返すようにplanetSpinner()メソッドを設定しました。したがって、返される "id"を常に追跡できます。しかし、もう一度、送信ボタンは常にid = 0になるようにします。
誰か助けてくれますか?私は本当にそれを感謝します。ありがとうございました。
スピナーコード(MainActivity.java)
public int planetSpinner(){
context = this;
List<String> categories = new ArrayList<String>();
categories.add("Mars($12 billions)"); //0
categories.add("Earth ($99 billions)"); //1
categories.add("Jupiter ($13 billions)"); //2
cSpinner = (Spinner) findViewById(R.id.coffee_spinner);
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, categories);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
cSpinner.setAdapter(dataAdapter);
cSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(MainActivity.this, "You selected: " + cSpinner.getItemAtPosition(position), Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
Toast.makeText(MainActivity.this, "Nothing selected", Toast.LENGTH_LONG).show();
}
});
return cSpinner.getSelectedItemPosition();
}
購入コード(MainActivity.java)
public void submitOrder(View view){
Toast.makeText(MainActivity.this, "You wanted to buy: " + planetSpinner(), Toast.LENGTH_LONG).show();
displayMessage(confirmationOrder(userName, price));
}
あなたは間違っています.. cSpinner.getItemAtPosition(position)、親ビューを取得する必要がありますparent.getItemAtPosition(position).toString() –
こんにちは。 Stringのid値はif文でidを使用できません。ありがとう。 – John
@ジョン、上記の声明で何を意味するのですか? –