Spinner (újabb kérdés): ha kiválasztok egy elemet, töltődjön fel más elemekkel a spinner

 ( spider | 2011. november 28., hétfő - 10:59 )

Adott egy spinner komponens
hogyan tudok ehhez listenert írni?

ez pl. nem működik:

ArrayAdapter adapter;
Spinner spin;

spin = (Spinner)findViewById(R.id.spinner1);
adapter=new ArrayAdapter(this,android.R.layout.simple_spinner_item,beolvas());
spin.setAdapter(adapter);

spin.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
editText.setText(editText.getText().toString()+spin.getSelectedItem().toString());
}
});

hibaüzenetet nem kapok rá, de nem indul el emulátoron a program
mit rontok el?
a beolvas metódusom egy String[]-öt ad vissza

A legjobb persze az volna ha a spinner egy adott elemére kattintva történne bizonyos esemény
viszont a setOnItemSelectedListener-t ha jól olvastam akkor nem támogatja az android

Előre is köszi a válaszokat!

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Hello!

Az én programomban működik az OnItemSelectedListener:
spin.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { editText.setText(editText.getText().toString()+spin.getSelectedItem().toString());
}
}

A Spinnert így töltöm fel az Activity OnCreate() eseményében:
String[] array_spinner=new String[3];
array_spinner[0]="Első elem";
array_spinner[1]="Második elem";
array_spinner[2]="Harmadik elem";
spin = (Spinner) findViewById(R.id.spinner1);
ArrayAdapter adapter = new ArrayAdapter(this,
android.R.layout.simple_spinner_item, array_spinner);
spin.setAdapter(adapter);

Így működik a spinner jól. Android 2.1 a target egyébként.

Köszi szépen! működik nekem is :)

A problémám a következő:
Van egy spinner komponensem, ami egy XML fájlból olvas be alapértelmezett értékeket egy beolvas() nevű metódus segítségével ami egy tömböt ad vissza

spinner spin;
ArrayAdapter adapter;

adapter=new ArrayAdapter(this,android.R.layout.simple_spinner_item,beolvas());
spin.setAdapter(adapter);

a beolvas metódusomban van egy szint nevű integer változó
ennek az értéke kezdetben 1
ennek megfelelően az XML fájlom első szintű elemeit olvassa be
ha megnövelem kettőre akkor a tömb amit a beolvas() metódus visszaad már egészen más elemekkel tér vissza

a cél az volna hogy amikor a spinner egyik elemére rákattintok, akkor azt az elemet átadja egy EditText-nek,
és a spinner új elemeket vegyen fel

az átadás része meg van, a spinner fel is töltődik kezdetben az alapértelmezett értékekkel,
de nem tudom újból feltölteni más elemekkel, és nem is tudom, hogy ezt hogyan valósíthatnám meg

a gond az hogy a spinner az ArrayAdapter példányosításánál kap értéket
új példányt létrehozni minden alkalommal amikor feltöltöm a spinnert eléggé nagy memóriapazarlás volna
és nem is lenne túl szép megoldás

van rá mód hogy valahogy beadjak neki új értékeket, anélkül hogy új példányt kellene létrehoznom?

előre is köszi a segítséget!