У меня проблемы с прядильщиком Android, а точнее в части сохранения данных.
Во-первых, я собираюсь рассказать вам, какова цель приведенного ниже кода.
Я хочу создать счетчик, чтобы пользователь мог выбрать, какую планету купить, затем, когда он / она нажмет кнопку отправки, появится тост с надписью «Вы хотели купить: ....», а затем со сводкой по покупке, например именем пользователя & цена.
Однако в середине процесса мне трудно сохранить идентификатор каждого элемента прядильщика.
Каждый раз, когда я выбираю «Земля» (id = 1) и нажимаю «Отправить», тост всегда будет относиться к «Марсу», у которого id = 0. Так что, похоже, проблема в том, что моя кнопка отправки всегда сбрасывает выбранный идентификатор.
Я намеренно установил метод planetSpinner () так, чтобы он возвращал int, поэтому я всегда мог отследить возвращаемый "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));
}
3 ответа
public class MySpinner extends Activity implements OnItemSelectedListener{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Spinner spinner = (Spinner) findViewById(R.id.coffee_spinner);
spinner.setOnItemSelectedListener(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
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, categories);
// Drop down layout style - list view with radio button
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// attaching data adapter to spinner
spinner.setAdapter(dataAdapter);
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// On selecting a spinner item
String item = parent.getItemAtPosition(position).toString();
// Showing selected spinner item
Toast.makeText(parent.getContext(), "Selected: " + item, Toast.LENGTH_LONG).show();
}
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
}
Это потому, что счетчик повторно инициализировался каждый раз, когда вы вызываете функцию. Таким образом, выбранное значение было первым элементом, поэтому ваша функция всегда возвращает 0. Надеюсь, что это поможет.
Вы пробовали это:
Toast.makeText(MainActivity.this, "You selected: " + categories.get(position), Toast.LENGTH_LONG).show();
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.