У меня проблемы с прядильщиком 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));
    }
2
John 7 Сен 2016 в 05:56

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
   }
}
1
Amit Ranjan 7 Сен 2016 в 03:34

Это потому, что счетчик повторно инициализировался каждый раз, когда вы вызываете функцию. Таким образом, выбранное значение было первым элементом, поэтому ваша функция всегда возвращает 0. Надеюсь, что это поможет.

1
Android.K.Doe 7 Сен 2016 в 03:31

Вы пробовали это:

Toast.makeText(MainActivity.this, "You selected: " + categories.get(position), Toast.LENGTH_LONG).show();
1
K.Sopheak 7 Сен 2016 в 03:07