有关SearchView建议的更多信息

时间:2016-05-19 14:41:32

标签: android sqlite searchview

哟哟,我问你们这个问题:

所以,我正在我的应用程序中实现这个searchView建议功能。但是我无法在每行显示足够的信息,因为我想:

enter image description here

正如你所看到的,我只有初始和性别,我想要更多的信息,如年龄和身份证等。

信息存储在应用程序的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;
}

提前致谢!

1 个答案:

答案 0 :(得分:0)

  1. 布局

    创建一个 rowLayout.xml ,代表每一行建议(在您的情况下为4个textview,包括姓名,性别,年龄,更多信息。)

  2. 在java

  3. <强> 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);
    

    这里我们创建一个字符串列表并为它们提供id。

    我们创建了字符串的Hashmap,然后添加到List。

    然后我们创建了一个String[] from,其中包含我们在Hashmap中使用的所有ID。

    然后我们创建了int[] to,其中包含 rowLayout.xml 中textview的所有ID。

    然后SimpleAdapter的第一个参数是Context第二个是List第三个是Layout第四个是List中使用的数组**和第五个是在xml中使用的** id

    然后我们setAdapter到我们的autoComplete Textview

    希望你明白。