web-dev-qa-db-fra.com

Créez un spinner par programmation dans Android

Je veux créer un spinner sans utiliser XML. Je suis nouveau dans Android et mes connaissances sont limitées. À présent, j'ai ce code (voir ci-dessus) et je veux mon spinner dans l'un des onglets de mon TabActivity. Là n'est pas une erreur évidente mais lorsque j'ouvre mon activité, l'onglet est vide. J'apprécierais un peu d'aide.

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    ArrayList<String> spinnerArray = new ArrayList<String>();
    spinnerArray.add("one");
    spinnerArray.add("two");
    spinnerArray.add("three");
    spinnerArray.add("four");
    spinnerArray.add("five");

    Spinner spinner = new Spinner(this);
    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, Android.R.layout.simple_spinner_dropdown_item, spinnerArray);
    spinner.setAdapter(spinnerArrayAdapter);

}
20
MavrosGatos

Vous devez ajouter le Spinner à une mise en page.

Créez d'abord un container pour le Spinner puis créez le Spinner et ajoutez-le à votre container. Définissez ensuite votre contenu Activity dans votre container.

Cela pourrait être fait comme ceci, dans votre méthode onCreate:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my);

    LinearLayout layout = new LinearLayout(this);

    ArrayList<String> spinnerArray = new ArrayList<String>();
    spinnerArray.add("one");
    spinnerArray.add("two");
    spinnerArray.add("three");
    spinnerArray.add("four");
    spinnerArray.add("five");

    Spinner spinner = new Spinner(this);
    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, Android.R.layout.simple_spinner_dropdown_item, spinnerArray);
    spinner.setAdapter(spinnerArrayAdapter);

    layout.addView(spinner);

    setContentView(layout);
}

MODIFIER:

Juste pour clarifier: si le Spinner n'est pas ajouté au contenu du Activity dans une mise en page, il n'est pas visible, c'est pourquoi vous n'obtenez aucune erreur ou quoi que ce soit, car il n'y a pas d'erreurs dans votre code en soi ;-)

30
Darwind
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        LinearLayout layout = new LinearLayout(this);

        // The following can also be done using a loop
        ArrayList<String> spinnerArray = new ArrayList<String>();
        spinnerArray.add("one");
        spinnerArray.add("two");
        spinnerArray.add("three");
        spinnerArray.add("four");
        spinnerArray.add("five");


        Spinner spinner = new Spinner(MainActivity.this);
        ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(MainActivity.this, Android.R.layout.simple_spinner_dropdown_item, spinnerArray);
        spinner.setAdapter(spinnerArrayAdapter);
        layout.addView(spinner);
        setContentView(layout);
    }
    }
0