HessianMad
HessianMad

Reputation: 567

How to add Strings to a spinner without .xml and Resources

It's quite simple. I just want to add Strings to a Spinner without using the .xml and without using the Resources folder.

I used onCreateOptionsMenu(Menu menu), but I didn't find any solution to my problem.

I have seen How can I add items to a spinner in Android?, but it doesn't work in my case...

Here's my code:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.action_bar3, menu);
    setTitle("");

    String[] arraySpinner = new String[] {
            "1", "2", "3", "4", "5"
    };
    Spinner s = (Spinner) findViewById(R.id.spinner);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.array.spinner_values);
    s.setAdapter(adapter);

    return true;
}

Note: This code doesn't run since I need a type of layout, but I don't know what layout...

Upvotes: 1

Views: 2207

Answers (4)

Andre Thiele
Andre Thiele

Reputation: 4201

For anyone looking for a Kotlin approach:

private fun setUpTranslateToSpinner() {
    val languages = listOf(
        "English",
        "German",
        "Russian",
        "Arabic",
        "Japanese",
        "Chinese"
    ).sorted()

    ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, languages).apply {
        setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
        translateToSpinner.adapter = this
    }

    translateToSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
        override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
            val item = parent?.getItemAtPosition(position)
            item.let { Log.e(TAG, item.toString()) }
        }

        override fun onNothingSelected(parent: AdapterView<*>?) {

        }
    }
}

Upvotes: 0

Dishonered
Dishonered

Reputation: 8851

You can create an array adapter like this:

ArrayAdapter aa = new
    ArrayAdapter(this, android.R.layout.simple_spinner_item, arraySpinner);

Upvotes: 0

John Joe
John Joe

Reputation: 12803

  1. Change to this ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, arraySpinner);

It crashes: java.lang.NullPointerException: Attempt to invoke virtual method Line: s.setAdapter(adapter);

  1. Initialize them inside onCreate method, not inside onCreateOptionsMenu

     public class SpinnerExample extends Activity {    
    
          private String[] arraySpinner;
    
            @Override
            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
    
                this.arraySpinner = new String[] {
                    "1", "2", "3", "4", "5"
                };
                Spinner s = (Spinner) findViewById(R.id.spinner);
                ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                        android.R.layout.simple_spinner_item, arraySpinner);
                s.setAdapter(adapter);
            }
        }
    

Upvotes: 2

Thracian
Thracian

Reputation: 67189

String categoryItem1 = "item1";
String categoryItem2 = "item2";
String categoryItem3 = "item3";
List<String> categories = new ArrayList<String>();
categories.add(categoryItem1);
categories.add(categoryItem2);
categories.add(categoryItem3);
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(getActivity(), R.layout.spinnner_item, categories);
// attaching data adapter to spinner
spinner.setAdapter(dataAdapter);

Upvotes: 0

Related Questions