2017-05-26 55 views
0

我正在使用动态和静态微调。 这是我的代码,我如何实现HashMap来显示用户选择的内容(值)?在spinners中使用HashMaps android studio

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(); 
      } 
     }); 
    } 
} 
+0

待办事项你想将'HashMap'数据传递给适配器? –

回答

0

使用的Hashmap希望这会帮助你。

价值微调

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

设定值从微调微调器

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

获得价值

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

我试图做这样的事情: HashMap datos = new HashMap <>(); (“雪佛兰”,“雪佛兰”); datos.put(“雪佛兰”,“雪佛兰”); –

+0

例如,我有这些值:“<字符串数组名= “array_marcas”> 雪佛兰 福特 本田 日产 雷诺 丰田 大众 < /串阵列> <字符串数组名= “array_chevrolet”> 雪佛兰 火花 马里布