Pregunta Usando el widget NumberPicker con cadenas


¿Hay alguna manera de utilizar el widget Android NumberPicker para elegir cadenas en lugar de enteros?


74
2017-11-22 12:47


origen


Respuestas:


NumberPicker picker = new NumberPicker(this);
picker.setMinValue(0);
picker.setMaxValue(2);
picker.setDisplayedValues( new String[] { "Belgium", "France", "United Kingdom" } );

189
2017-11-27 18:27



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];
  }
});

¡Espero que ayude!


32
2017-10-19 13:12



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

Podrías querer decir algo más, pero no está muy claro a qué te refieres.

ACTUALIZADO:

Puede falsificarlo configurando su propio formateador:

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 () aún devolverá un int, por lo que probablemente desee asignar los nombres de los países a sus ids.

ADICIONAL: La implementación de NumberPicker tiene:

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

Lo cual parece hacer un mejor trabajo de lo que quieres que el formateador anterior ... aunque no se menciona en la documentación, probablemente no forma parte de la API pública.


12
2017-11-22 13:00



prueba esta solución, puede ayudarte

    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();

        }
    });

5
2017-08-09 03:10



clase pública YourClassName extiende AppCompatActivity {

NumberPicker picker = null;

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

    picker = (NumberPicker) findViewById(R.id.pickerId_From_your_Layout_file);

     picker.setMinValue(0);
    picker.setMaxValue(3);
    picker.setDisplayedValues(new String[]{"English", "French","Kiswahili","عربى"});
}

}

// Esto funcionó para mí.


0
2018-03-16 20:54