2016-05-19 11 views
0

Yo yo, ich für euch eine Frage bekam:Weitere Informationen zu Search Vorschläge

Also, ich bin der Umsetzung dieser Suche Vorschlag Funktion in meiner app. Aber ich kann nicht genug Informationen über die einzelnen Zeile angezeigt bekommen, wie ich wollte:

enter image description here

Wie Sie sehen können, ich habe nur Anfangs- und Geschlecht dort, ich möchte weitere Informationen wie Alter und ID usw., .

Die Informationen werden in einer SQLite-Datenbank in der App gespeichert, und ich jene Informationen heraus durch den Code unten ziehen:

public MyDBHandler(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { 
    super(context, DATABASE_NAME, factory, DATABASE_VERSION); 

    // This HashMap is used to map table fields to Custom Suggestion fields 
    mAliasMap = new HashMap<String, String>(); 

    // Unique id for the each Suggestions (Mandatory) 
    mAliasMap.put("_ID", COLUMN_ID + " as " + "_id"); 

    // Text for Suggestions (Mandatory) 
    mAliasMap.put(SearchManager.SUGGEST_COLUMN_TEXT_1, COLUMN_INITIAL + " as " + SearchManager.SUGGEST_COLUMN_TEXT_1); 

    mAliasMap.put(SearchManager.SUGGEST_COLUMN_TEXT_2, COLUMN_GENDER + " as " + SearchManager.SUGGEST_COLUMN_TEXT_2); 

} 

/** Returns patients for suggestions */ 
public Cursor getPatients(String[] selectionArgs){ 

    String selection = COLUMN_INITIAL + " like ? "; 

    if(selectionArgs!=null){ 
     selectionArgs[0] = "%"+selectionArgs[0] + "%"; 
    } 

    SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder(); 
    queryBuilder.setProjectionMap(mAliasMap); 

    queryBuilder.setTables(TABLE_PATIENTS); 

    Cursor c = queryBuilder.query(getReadableDatabase(), 
      new String[] { "_ID", 
        SearchManager.SUGGEST_COLUMN_TEXT_1, 
        SearchManager.SUGGEST_COLUMN_TEXT_2 } , 
      selection, 
      selectionArgs, 
      null, 
      null, 
      COLUMN_INITIAL + " asc ","10" 
    ); 
    return c; 
} 

Vielen Dank im Voraus!

Antwort

0
  1. Layout-

    eine rowLayout.xml, die jede Zeile von Vorschlag (nach Name, Geschlecht, Alter, mehr Info. In Ihrem Fall 4 Textview)

  2. in Java repräsentieren erstellen

List<HashMap<String,String>> aList = new ArrayList<HashMap<String,String>>();

for (int i=0;i<totalNoOfSuggestion;i++) { 
      HashMap<String, String> hm = new HashMap<String, String>(); 
      hm.put("name",name); 
      hm.put("gender", gender); 
      hm.put("age", age); 
      hm.put("moreInfo", moreInfo); 
      aList.add(hm); 
     } 

String[] from = { "name","gender","age","moreInfo"}; 

    int[] to = { R.id.name,R.id.gender,R.id.age,R.id.moreInfo}; 
      SimpleAdapter simpleAdapter = new SimpleAdapter(getBaseContext(),aList,R.layout.rowLayout,from,to); 

autoComplete.setAdapter(simpleAdapter); 

Hier erstellen wir eine Liste von Strings und geben ID an sie.

Wir haben Hashmap von Strings erstellt und dann zu List hinzugefügt.

Dann haben wir eine String[] from erstellt, die alle IDs enthält, die wir in Hashmap verwendet haben.

Dann haben wir erstellt, die alle IDs von textview in unserem rowLayout.xml enthält.

Dann SimpleAdapter deren erstes Argument Context zweite ist List dritte ist Layout vierte ist Array von der Id in List verwendet ** und fünfte ist ** in XML verwendet IDs.

Dann wir setAdapter zu unserem autoComplete Textview.

Ich hoffe, Sie haben verstanden.

Verwandte Themen