Salve a tutti e buona Pasqua. Mi ritrovo a scrivervi perchè ho un problema con un edit text ed uno spinner. Ho un tabhost con due tabwidget, cliccandone uno si visualizza l'edit text che deve fare da search box, cliccando l'altro si visualizza uno spinner. Ho da fare due domande:
1) Come riesco a far visualizzare i nomi che devono essere inseriti nel tab della ricerca? Mi spiego meglio, il codice che ho mi funziona alla grande se preso "singolarmente", ma io l'ho aggiunto anche al codice dello spinner e si trovano entrambi nel codice del tabhost:
1import java.util.ArrayList;
2
3import android.app.Activity;
4import android.os.Bundle;
5import android.text.Editable;
6import android.text.TextWatcher;
7import android.widget.EditText;
8import android.widget.ListView;
9import android.widget.Spinner;
10import android.widget.TabHost;
11import android.widget.ArrayAdapter;
12
13public class zedactivity extends Activity {
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29String[] regioni = {
30"Umbria",
31"Aosta",
32"Calabria",
33"Sicilia",
34"Toscana",
35"Lazio",
36"Molise",
37"Liguria",
38
39};
40
41
42Spinner s1;
43
44
45/** Called when the activity is first created. */
46public void onCreate(Bundle savedInstanceState) {
47super.onCreate(savedInstanceState);
48setContentView(R.layout.main);
49// Riferimento al TabHost
50TabHost tabHost = (TabHost) findViewById(R.id.myTabHost);
51tabHost.setup();
52// Tab associato alla prima view
53tabHost.addTab(tabHost.newTabSpec("Province").setContent(R.id.EditText01)
54.setIndicator("Per Province"));
55
56// Tab associato alla seconda view
57tabHost.addTab(tabHost.newTabSpec("Regioni").setContent(R.id.spinner)
58.setIndicator("Per Regioni"));
59
60//Codice per lo spinner
61s1 = (Spinner) findViewById(R.id.spinner);
62
63ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
64android.R.layout.simple_spinner_item, regioni);
65adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
66
67s1.setAdapter(adapter);
68
69}
70
71//Codice per l'edit text che fa da search box
72
73private ListView lv1;
74private EditText ed;
75private String lv_arr[] = {"Roma","Genova","Campobasso","Firenze","Catanzaro","Perugia",};
76private ArrayList<String> arr_sort= new ArrayList<String>();
77int textlength=0;
78
79public void onStart(Bundle icicle){
80super.onStart();
81setContentView(R.layout.main);
82lv1=(ListView)findViewById(R.id.ListView01);
83ed=(EditText)findViewById(R.id.EditText01);
84// By using setAdpater method in listview we an add string array in list.
85lv1.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , lv_arr));
86ed.addTextChangedListener(new TextWatcher() {
87
88public void afterTextChanged(Editable s) {
89}
90
91public void beforeTextChanged(CharSequence s, int start, int count,
92int after) {
93}
94
95public void onTextChanged(CharSequence s, int start, int before,
96int count) {
97
98textlength=ed.getText().length();
99arr_sort.clear();
100for(int i=0;i<lv_arr.length;i++)
101{
102if(textlength<=lv_arr[i].length())
103{
104if(ed.getText().toString().equalsIgnoreCase((String) lv_arr[i].subSequence(0, textlength)))
105{
106arr_sort.add(lv_arr[i]);
107}
108}
109}
110
111lv1.setAdapter(new ArrayAdapter<String>(zedactivity.this,android.R.layout.simple_list_item_1 , arr_sort));
112
113
114}
115});
116}
117
118
119}
120
Quando faccio partire l'applicazione lo spinner funziona, ma non mi appaiono i nomi per l'edit text. Come fare?
2) Con lo spinner, una volta selezionata una voce, vorrei che mi comparissero tutte le province di quella regione. Per poterlo fare devo creare una nuova activity associato ad un layout contenente tutte le province d'Italia e poi tramite codice mi visualizza solo quelle della regione selezionata oppure va scritto tutto nel codice appena postato sopra?
Grazie.