Application crash when try to set text selected from spinner to textview

271 Views Asked by At

I want to set text from selected item from spinner to textview, But when i tried to do application craches. Can any one help me .

public class MainActivity extends AppCompatActivity {

    TextView txt;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        txt=(TextView) findViewById(R.id.txt1) ;

        ArrayList<ItemData> list=new ArrayList<>();
        list.add(new ItemData("Cash",R.drawable.paymentcashnew));
        list.add(new ItemData("Paytm",R.drawable.paymentpaytmnew));

        Spinner sp=(Spinner)findViewById(R.id.select_cash);
        String result = sp.getSelectedItem().toString();
        txt.setText(result);


        SpinnerAdapter adapter=new SpinnerAdapter(this,
                R.layout.spinner,R.id.txt,list);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        sp.setAdapter(adapter);



    }
}
4

There are 4 best solutions below

1
On
       sp.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                    String result = sp.getSelectedItem().toString();
    txt.setText(result);
                }
            });

This may help Frnd.

0
On

spinner has no "getSelectedItem". https://developer.android.com/reference/android/widget/Spinner.html https://developer.android.com/guide/topics/ui/controls/spinner.html and here's how you get the text-value of the selected row: https://stackoverflow.com/a/15545909/3022387

spin.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1,
                    int arg2, long arg3) {
                String imc_met=spin.getSelectedItem().toString();

            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub

            }
        });
0
On

Implement spinner.setOnItemClickListener and then find text inside that method like this.

spinner.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
              String result = sp.getSelectedItem().toString();
              txt.setText(result);
            }
        });
1
On

You can't get selected Item before setting adapter.Try this below code

public class MainActivity extends AppCompatActivity {

final TextView txt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

txt=(TextView) findViewById(R.id.txt1) ;

ArrayList<ItemData> list=new ArrayList<>();
list.add(new ItemData("Cash",R.drawable.paymentcashnew));
list.add(new ItemData("Paytm",R.drawable.paymentpaytmnew));

Spinner sp=(Spinner)findViewById(R.id.select_cash);
SpinnerAdapter adapter=new SpinnerAdapter(this,
        R.layout.spinner,R.id.txt,list);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sp.setAdapter(adapter);
sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()     {
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    Object item = parent.getItemAtPosition(position);
String result = sp.getSelectedItem().toString();
txt.setText(result);

}
public void onNothingSelected(AdapterView<?> parent) {
}
});


}
}