Odalis T
Odalis T

Reputation: 11

Using HashMaps in spinners android studio

I am using dynamic and static spinner. This is my code, how can I implement a HashMap to show what the user selects (values)?

public class DatosAutoActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {

    private Spinner sp_marca, sp_modelo, sp_colores;

    private TextView tvMarca, tvModelo, tvColor, tvPlacas;
    private Button btn_enviarDatos;


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


        sp_marca = (Spinner)findViewById(R.id.sp_marca);
        sp_modelo = (Spinner)findViewById(R.id.sp_modelo);
        sp_colores = (Spinner)findViewById(R.id.sp_colores);


        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
                this,
                R.array.array_marcas,
                android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        sp_marca.setAdapter(adapter);
        sp_marca.setOnItemSelectedListener(this);

        ArrayAdapter<CharSequence> adapterColor = ArrayAdapter.createFromResource(
                this,
                R.array.array_colores,
                android.R.layout.simple_spinner_item);
        adapterColor.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        sp_colores.setAdapter(adapterColor);
        sp_colores.setOnItemSelectedListener(this);
    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position,
                               long id) {
        int[] marcas = {R.array.array_chevrolet, R.array.array_ford, R.array.array_honda,
                R.array.array_nissan,R.array.array_renault, R.array.array_toyota,
                R.array.array_volkswagen};

        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
                this,
                marcas[position],
                android.R.layout.simple_spinner_item);

        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        sp_modelo.setAdapter(adapter);
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {
    }

    @Override
    protected void onResume() {
        super.onResume();
        btn_enviarDatos = (Button)findViewById(R.id.btn_enviarDatos);

        btn_enviarDatos.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    Intent siguiente = new Intent(DatosAutoActivity.this, VerificacionDatosActivity.class);
                    startActivity(siguiente);
                }
                else {
                    Toast.makeText(getApplicationContext(), "Debes llenar todos los campos", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

Upvotes: 1

Views: 3371

Answers (1)

Ratilal Chopda
Ratilal Chopda

Reputation: 4220

Using Hashmap hope this will help you.

Value for spinner

String[] spinnerArray = new String[array.size()];
HashMap<Integer,String> spinnerMap = new HashMap<Integer, String>(); 
for (int i = 0; i < array.size(); i++)
{
   spinnerMap.put(i,array.get(i));
   spinnerArray[i] = array.get(i);
}

Set value to spinner

ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, android.R.layout.simple_spinner_item, spinnerArray);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);

Get value from spinner

String name = spinner.getSelectedItem().toString();
String id = spinnerMap.get(spinner.getSelectedItemPosition());

Upvotes: 1

Related Questions