Utilisation de Widget NumberPicker avec des cordes

Existe-t-il un moyen d'utiliser le widget Android NumberPicker pour choisir des chaînes au lieu d'entiers?

  • DefaultHttpClient to AndroidHttpClient
  • Gradle dans Android Studio: Impossible de résoudre des bibliothèques tierces
  • Hook Android Sytem API liée à la sortie de texte
  • Importer des packages Android ne peut pas être résolu
  • Passer le jeton d'accès Facebook à la boîte de commentaires
  • Comment ajouter plusieurs vues au gestionnaire de fenêtres dans Android
  • 4 Solutions collect form web for “Utilisation de Widget NumberPicker avec des cordes”

    NumberPicker picker = new NumberPicker(this); picker.setMinValue(0); picker.setMaxValue(2); picker.setDisplayedValues( new String[] { "Belgium", "France", "United Kingdom" } ); 
     NumberPicker numberPicker = new NumberPicker(this); String[] arrayString= new String[]{"hakuna","matata","timon","and","pumba"}; numberPicker.setMinValue(0); numberPicker.setMaxValue(arrayString.length-1); numberPicker.setFormatter(new NumberPicker.Formatter() { @Override public String format(int value) { // TODO Auto-generated method stub return arrayString[value]; } }); 

    J'espère que cela pourra aider!

     String value = String.valueOf(picker.getValue()); 

    Vous pourriez dire autre chose, mais ce n'est pas très clair ce que vous voulez dire.

    ACTUALISÉ:

    Vous pouvez le fausser en configurant votre propre formatateur:

     CountryFormatter implements Formatter { public String toString(int value) { switch(value) { case 0: return "England"; case 1: return "France"; } return "Unknown"; } } picker.setFormatter(new CountryFormatter()); 

    GetValue () renverra toujours un int, donc vous souhaitez probablement mapper les noms des pays à leurs identifiants.

    AJOUTE: La mise en œuvre de NumberPicker a:

     public void setRange(int start, int end, String[] displayedValues) 

    Ce qui semble faire un meilleur travail de ce que vous voulez, puis le formateur ci-dessus … bien qu'il ne soit pas mentionné dans la documentation, il est probable que cela ne fait pas partie de l'api public

    Essayez cette solution, peut vous aider

      NumberPicker pickers = new NumberPicker(this); String[] arrayPicker= new String[]{"abc","def","ghi","jkl","mno"}; //set min value zero pickers.setMinValue(0); //set max value from length array string reduced 1 pickers.setMaxValue(arrayPicker.length - 1); //implement array string to number picker pickers.setDisplayedValues(arrayPicker); //disable soft keyboard pickers.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS); //set wrap true or false, try it you will know the difference pickers.setWrapSelectorWheel(false); //create button to test selected text string btnPicker.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //get position (int) from number picker int pos = pickers.getValue(); //get string from number picker and position String selecPicker = arrayPicker[pos]; //test toast to get selected text string Toast.makeText(context, selecPicker , Toast.LENGTH_SHORT).show(); } }); 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.