2016-05-19 3 views
0

Yo yo, у меня возник вопрос для вас, ребята:Дополнительная информация о предложениях SearchView

Итак, я реализую эту функцию подсказки SearchView в своем приложении. Но я не могу получить достаточно информации, отображаемой на каждой строке, как я хотел:

enter image description here

Как вы можете видеть, у меня есть только начальный и пол там, я хочу больше информации, например, возраст и т.д. ID, ,

Информация хранится в базе данных SQLite в приложение, и я потянув эти данные через код ниже:

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; 
} 

Спасибо заранее!

ответ

0
  1. Layout

    создать rowLayout.xml которые представляют каждую строку предложения (в вашем случае 4 TextView для имени, пола, возраста, подробнее.)

  2. В Java

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); 

Здесь мы создаем список строк и даем идентификатор им.

Мы создали Hashmap of Strings, а затем добавили в список.

Затем мы создали String[] from, который содержит все идентификаторы, которые мы использовали в Hashmap.

Затем мы создали , который содержит весь текст текста в нашем rowLayout.xml.

Тогда SimpleAdapter, чей первый аргумент Context второго один List третья один Layout четвёртые один массив идентификаторов используются в List ** и пятый один ** идентификаторы, используемый в XML.

После этого мы setAdapter к нашему autoComplete Textview.

Надеюсь, что вы поняли.