Hola a todo el Mundo, estoy empezando en el mundillo de android para
mi proyecto fin de carrera.
Tengo una aplicación con dos spinner enlazados, que me funciona bien,
pero el problema lo tengo a la hora de ampliar los item que tiene cada
spinner.
Codigo del MainActivity:
package com.fast;
import android.app.Activity;
import android.os.Bundle;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.SpinnerAdapter;
public class MainActivity extends Activity {
protected String mSelection;
protected String mSelection2;
protected ArrayAdapter<CharSequence> adaptador;
protected ArrayAdapter<CharSequence> mAdapter2;
protected ArrayAdapter<CharSequence> mAdapter3;
protected ArrayAdapter<CharSequence> mAdapter4;
protected ArrayAdapter<CharSequence> mAdapter5;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.adaptador = ArrayAdapter.createFromResource(this,
R.array.Ciudad,
android.R.layout.simple_spinner_item);
this.mAdapter2 = ArrayAdapter.createFromResource(this,
R.array.Madrid,
android.R.layout.simple_spinner_item);
this.mAdapter3 = ArrayAdapter.createFromResource(this,
R.array.Barcelona,
android.R.layout.simple_spinner_item);
this.mAdapter4 = ArrayAdapter.createFromResource(this,
R.array.Sevilla,
android.R.layout.simple_spinner_item);
this.mAdapter5 = ArrayAdapter.createFromResource(this,
R.array.Valencia,
android.R.layout.simple_spinner_item);
final SpinnerAdapter[] mAdapter = new SpinnerAdapter[]
{mAdapter2, mAdapter3, mAdapter4, mAdapter5};
final Spinner spinner1 = (Spinner)findViewById(R.id.Spinner01);
final Spinner spinner2 = (Spinner)findViewById(R.id.Spinner02);
adaptador.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mAdapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mAdapter4.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mAdapter5.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner1.setAdapter(adaptador);
spinner1.setOnItemSelectedListener(new
AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent,
android.view.View v, int position, long id) {
MainActivity.this.mSelection =
parent.getItemAtPosition(position).toString();
TextView resultText = (TextView)findViewById(R.id.texto1);
resultText.setText("Seleccionado: " +
MainActivity.this.mSelection);
spinner2.setAdapter(mAdapter[position]);
spinner2.setOnItemSelectedListener(new
AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent,
android.view.View v, int position2, long id) {
MainActivity.this.mSelection2 =
parent.getItemAtPosition(position2).toString();
TextView resultText1 =
(TextView)findViewById(R.id.texto2);
resultText1.setText("Selecionados: " +
MainActivity.this.mSelection +", "
+ MainActivity.this.mSelection2);
}
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
public void onNothingSelected(AdapterView<?> parent) {
}
});
}}
Bueno explico un poco, el Array "Ciudad" está compuesto por: Madrid,
Barcelona, Sevilla y Valencia, para que funcione he tenido que poner
adaptadores a cada uno de ellos y aquí es donde está mi problema,
porque si yo quiero poner en mi primer spinner muchos más elementos,
tendría que ir poniendo más adaptadores y seguro que existe alguna
forma más sencilla de ponerlo, decir que llevo programando en android
y en java muy muy poco, si alguien me puede guiar en cómo mejorar el
código se lo agradecería.
Un saludo y gracias
Por si alguien lo necesita pongo el codigo del Main.xml y del
strings.xml
Codigo Main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="
http://schemas.android.com/apk/res/
android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
android:id="@+id/texto1"
android:layout_margin="5sp"/>
<Spinner android:id="@+id/Spinner01"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<Spinner android:id="@+id/Spinner02"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
android:id="@+id/texto2"
android:layout_margin="5sp"
android:textSize="20sp"
android:textStyle="bold"/>
</LinearLayout>
Codigo Strings.xml:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<resources>
<string name="hello">Hello World</string>
<string name="app_name">Sat Finder</string>
<string-array name="Ciudad">
<item>Madrid</item>
<item>Barcelona</item>
<item>Sevilla</item>
<item>Valencia</item>
</string-array>
<string-array name="Madrid">
<item>Mad1</item>
<item>Mad2</item>
<item>Mad3</item>
<item>Mad4</item>
<item>Mad5</item>
</string-array>
<string-array name="Barcelona">
<item>Bar1</item>
<item>Bar2</item>
<item>Bar3</item>
<item>Bar4</item>
<item>Bar5</item>
</string-array>
<string-array name="Sevilla">
<item>Sev1</item>
<item>Sev2</item>
<item>Sev3</item>
<item>Sev4</item>
<item>Sev5</item>
</string-array>
<string-array name="Valencia">
<item>Val1</item>
<item>Val2</item>
<item>Val3</item>
<item>Val4</item>
<item>Val5</item>
</string-array>
</resources>