Salve, nella mia applicazione ho inserito l'activity "cerca" contenente due tabhost. In un tab si cerca digitando un nome e nell'altro si cerca tramite spinner.
Ricerca per nome:
x1package it.caronte.bar;
2
3
4import java.util.ArrayList;
5
6import android.os.Bundle;
7import android.text.Editable;
8import android.text.TextWatcher;
9import android.widget.EditText;
10import android.widget.ListView;
11import android.app.Activity;
12import android.widget.ArrayAdapter;
13
14
15
16
17public class SearchCocktail extends Activity {
18
19
20
21/** Called when the activity is first created. */
22private ListView lv1;
23private EditText ed;
24private String lv_arr[] = {"Antonio",
25"Arma",
26"'Bomba",
27"Barbara",
28"Elastico",
29"Formica",
30"Gatto",
31"Michele",};
32private ArrayList<String> arr_sort= new ArrayList<String>();
33int textlength=0;
34
35public void onCreate(Bundle savedInstanceState) {
36super.onCreate(savedInstanceState);
37setContentView(R.layout.main);
38
39
40lv1=(ListView)findViewById(R.id.ListView1);
41ed=(EditText)findViewById(R.id.EditText1);
42// By using setAdpater method in listview we an add string array in list.
43lv1.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , lv_arr));
44ed.addTextChangedListener(new TextWatcher() {
45
46public void afterTextChanged(Editable s) {
47}
48
49public void beforeTextChanged(CharSequence s, int start, int count,
50int after) {
51}
52
53public void onTextChanged(CharSequence s, int start, int before,
54int count) {
55
56textlength=ed.getText().length();
57arr_sort.clear();
58for(int i=0;i<lv_arr.length;i++)
59{
60if(textlength<=lv_arr[i].length())
61{
62if(ed.getText().toString().equalsIgnoreCase((String) lv_arr[i].subSequence(0, textlength)))
63{
64arr_sort.add(lv_arr[i]);
65}
66}
67}
68
69lv1.setAdapter(new ArrayAdapter<String>(SearchCocktail.this,android.R.layout.simple_list_item_1 , arr_sort));
70
71}
72});
73}
74
75}
Ricerca tramite spinner:
931package it.caronte.bar;
2
3import java.util.ArrayList;
4import java.util.HashMap;
5import java.util.List;
6import java.util.Map;
7import java.util.TreeSet
8
9public class Ingredients
10{
11public static final String TUTTI_I_NOMI = "Tutti i nomi";
12
13public static final String NOMI = "NOMI";
14
15public static final String OGGETTI = "OGGETTI";
16
17
18
19private String nomi;
20
21private String oggetto;
22
23public Nomi(String nomi, String oggetto)
24{
25super();
26
27this.nomi = nomi;
28this.oggetto = oggetto;
29}
30
31
32
33
34public String getNomi()
35{
36return nomi;
37}
38
39public String getOggetto()
40{
41return oggetto;
42}
43
44public static final Nomi[] DB = new Nomi[]
45{ new Nomi("Antonio", "Persona"), new Nomi("Arma", "Oggetto"), new Nomi("Bomba", "Oggetto"), new Nomi("Barbara", "Persona"), new Nomi("Elastico", "Oggetto"), new Nomi("Formica", "Animale"),};private static ArrayList<String> nomi;
46
47public static List<Map<String, String>> getData()
48{
49List<Map<String, String>> ret = new ArrayList<Map<String, String>>();
50for (Nomi nomi : DB)
51{
52ret.add(nomi.getMap());
53}
54return ret;
55}
56
57public static List<Map<String, String>> getData(String nomi)
58{
59List<Map<String, String>> ret = new ArrayList<Map<String, String>>();
60for (Nomi nomi : DB)
61{
62if (nomi.equals(TUTTI_I_NOMI) || nomi.equals(nomi.getNomi()))
63{
64ret.add(nomi.getMap());
65}
66}
67return ret;
68}
69
70Map<String, String> getMap()
71{
72HashMap<String, String> map = new HashMap<String, String>();
73
74map.put(NOMI, nomi);
75map.put(OGGETTO, oggetto);
76return map;
77}
78
79public static ArrayList<String> getOggetto()
80{
81if (oggetto == null)
82{
83TreeSet<String> set = new TreeSet<String>();
84for (Oggetto oggetto : DB)
85{
86set.add(oggetto.getOggetto());
87}
88oggetto = new ArrayList<String>();
89oggetto.addAll(set);
90}
91return oggetto;
92}
93}
I nomi "Antonio, Arma..." li ho in un file .xml situato dentro la cartell res/raw. Come faccio a fare un intent, in modo che una volta premuto il nome che mi serve mi visualizzi una pagina informativa sul nome premuto? Premetto che il layout per la pagina informativa già ce l'ho. Grazie.