g8214435
g8214435

Reputation: 737

Spinner, not set value if i dont click(android)

I have a spinner:

 spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int childposition, long id) {
        textView.setText(spinner.getSelectedItem().toString());
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {
        textView.setText("");
    }
    });

Above you'll see that textView - is my text object. I'm displaying a text item spinner in the textView when I click it. If I dont click the spinner then my textView must be textView.setText("");

But the spinner is always set text in my textView, even if I do not choose spinner.

Question

How can I accomplish this?:

Upvotes: 1

Views: 296

Answers (1)

Martin Stanimirov
Martin Stanimirov

Reputation: 534

String item = parent.getItemAtPosition(childposition).toString(); //Get selected item

if(item.equals("spinner")){ // Check if it equals spinner

     textView.setText(item); // Set text to item

}else{

     textView.setText(""); // If it doesn't equal spinner set text to ""

}

If I understood the question right, putting this instead of textView.setText(spinner.getSelectedItem().toString()); and deleting content of onNothingSelected should do the trick.

UPDATE

I finally understood what you mean. To do this create your spinner like this and add "" as first choice in your string-array resource :

String[] newArray = getResources().getStringArray(R.array.yourArray);
List<String> myResArrayList = Arrays.asList(newArray);
ArrayList<String> spinnerItems = new ArrayList<String>(myResArrayList);

//Making adapter with ArrayList instead of String[] allows us to add/remove items later in the code

Spinner spinner = (Spinner) findViewById(R.id.spinner);
// Create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, spinnerItems);
// Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
spinner.setAdapter(adapter);

spinnerItems.remove(0);
adapter.notifyDataSetChanged(); // Here we remove the first choice which is "" so the user won't be able to select empty. 

Upvotes: 1

Related Questions