所以,我正在我的应用程序中实现这个searchView建议功能。但是我无法在每行显示足够的信息,因为我想:
正如你所看到的,我只有初始和性别,我想要更多的信息,如年龄和身份证等。
信息存储在应用程序的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 :(得分:0)
布局
创建一个 rowLayout.xml ,代表每一行建议(在您的情况下为4个textview,包括姓名,性别,年龄,更多信息。)
在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);
这里我们创建一个字符串列表并为它们提供id。
我们创建了字符串的Hashmap,然后添加到List。
然后我们创建了一个String[] from
,其中包含我们在Hashmap中使用的所有ID。
然后我们创建了int[] to
,其中包含 rowLayout.xml 中textview的所有ID。
然后SimpleAdapter
的第一个参数是Context
第二个是List
第三个是Layout
第四个是在List
中使用的数组**和第五个是在xml中使用的** id 。
然后我们setAdapter
到我们的autoComplete Textview
。
希望你明白。