2

I have spinner in my activity which shows quantity ranging from 1 to 10.When I am selecting value from spinner its default value is String and when I am converting it to Integer it is showing following error.

 >  android.content.res.Resources$NotFoundException: String resource ID #0x2
    at android.content.res.Resources.getText(Resources.java:363)
    at android.widget.Toast.makeText(Toast.java:680)
    at Adapters.ProductAdapter$2.onItemSelected(ProductAdapter.java:104)
    at android.widget.AdapterView.fireOnSelected(AdapterView.java:1366)
    at android.widget.AdapterView.dispatchOnItemSelected(AdapterView.java:1355)
    at android.widget.AdapterView.access$300(AdapterView.java:59)
    at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:1314)
    at android.os.Handler.handleCallback(Handler.java:873)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:214)
    at android.app.ActivityThread.main(ActivityThread.java:7156)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975)

Here is my code:

   List<String> qty = new ArrayList<>();
    qty.add("Select qty");
    qty.add("1");
    qty.add("2");
    qty.add("3");
    qty.add("4");
    qty.add("5");
    qty.add("6");
    qty.add("7");
    qty.add("8");
    qty.add("9");
    qty.add("10");

    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(context, android.R.layout.simple_spinner_item, qty);

    dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    qtySpinner.setAdapter(dataAdapter);

    qtySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

            String item = adapterView.getItemAtPosition(i).toString();

                int qty = Integer.parseInt(item);

                Toast.makeText(context,qty, Toast.LENGTH_SHORT).show();

       }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });

Someone please let me know what I am doing wrong.Any help would be appreciated.

THANKS

Digvijay
  • 2,887
  • 3
  • 36
  • 86
  • 1
    If you would like to just show the number in a Toast message why do you convert string to int? Use the string version of it. – just Dec 24 '19 at 13:52

4 Answers4

2

You must change this line:

Toast.makeText(context,qty, Toast.LENGTH_SHORT).show();

Whit:

Toast.makeText(context,String.valueOf(qty), Toast.LENGTH_SHORT).show();
0

You have to use String in Toast. You cant't use Integer in toast. you have two ways to solve it: 1. Dont convert item to integer 2. inside toast add qty to a string like "qty is: " + qty

amir mousawi
  • 39
  • 1
  • 9
0

//try this

List<String> qty = new ArrayList<>();
qty.add("Select qty");
qty.add("1");
qty.add("2");
qty.add("3");
qty.add("4");
qty.add("5");
qty.add("6");
qty.add("7");
qty.add("8");
qty.add("9");
qty.add("10");

ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(context, android.R.layout.simple_spinner_item, qty);

dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

qtySpinner.setAdapter(dataAdapter);

qtySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
      if(i!=0)
      {
        String item = adapterView.getItemAtPosition(i).toString();

            int qty = Integer.parseInt(item);

            Toast.makeText(context,qty+"", Toast.LENGTH_SHORT).show();
      }

   }

    @Override
    public void onNothingSelected(AdapterView<?> adapterView) {

    }
});
Jitu Batiya
  • 159
  • 9
0

you should convert item to int use code below instead of your :

List<String> qty = new ArrayList<>();
qty.add("Select qty");
qty.add("1");
qty.add("2");
qty.add("3");
qty.add("4");
qty.add("5");
qty.add("6");
qty.add("7");
qty.add("8");
qty.add("9");
qty.add("10");

ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(context, android.R.layout.simple_spinner_item, qty);

dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

qtySpinner.setAdapter(dataAdapter);

qtySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

        String item = adapterView.getItemAtPosition(i);



            Toast.makeText(context,item, Toast.LENGTH_SHORT).show();

   }

    @Override
    public void onNothingSelected(AdapterView<?> adapterView) {

    }
});
ȜAmer Elsayed
  • 55
  • 1
  • 10
  • It is showing red line below `adapterView.getItemAtPosition(i)` and saying `cast to java.lang.String` – Digvijay Dec 24 '19 at 14:59