[英]Add two values to AutocompleteTextview Adapter
到目前為止,我試圖在autoCompleteTextView中顯示聯系人列表,但我已經成功實現了這一點,但是我需要使用與name相關的contact_id
,我應該如何將id
與name綁定?
我已經使用哈希圖存儲聯系人列表。
這是我的代碼以獲取聯系並將其添加到hashmap
Cursor cursor_number=getActivity().getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null,null,null,null);
if(cursor_number!=null){
if (cursor_number.moveToFirst()){
do{
contact_id=cursor_number.getString(cursor_number.getColumnIndex(ContactsContract.Data._ID));
if(Integer.parseInt(cursor_number.getString(cursor_number.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)))>0) {
Cursor cursor_number1 = getActivity().getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.Data.CONTACT_ID + " = ? ", new String[]{contact_id}, null);
if (cursor_number1 != null) {
while (cursor_number1.moveToNext()) {
String name=cursor_number1.getString(cursor_number1.getColumnIndex(ContactsContract.Data.DISPLAY_NAME));
String id=contact_id;
HashMap<String, String> contact_data=new HashMap<String, String>();
contact_data.put(id,name);
}
cursor_number1.close();
}
}
}
while (cursor_number.moveToNext());
cursor_number.close();
}
}
這就是我將適配器添加到autoComplete textView的方式
autoCompleteTextView =(AutoCompleteTextView) this.getActivity().findViewById(R.id.act_network_auto_search);
autoCompleteTextView.setThreshold(2);
checkContacts();
Collection<String> collection=contact_data.values();
String[] array= collection.toArray(new String[collection.size()]);
adapter = new ArrayAdapter<String>(getContext(),
android.R.layout.simple_dropdown_item_1line,array);
autoCompleteTextView.setAdapter(adapter);
我應該如何獲得與name
相關的id
任何幫助將是巨大的!
更新:
LinkedHashMap<String, String> contact_data=new LinkedHashMap<String, String>();
contact_data.put(id,name);
檢查此示例AutocompleteTextView
您可以從contact_data獲取ID,如果您確定名稱是唯一的
public String getIdByName(String name) {
for (Entry<String,String> entry : contact_data.entrySet()) {
if (name.equals(value, entry.getValue())) {
return entry.getKey();
}
}
return null;
}
也檢查這個答案
如果您必須使用鍵值對,那么我建議您使用Hasmap的LinkedHashMap,因為hashmap沒有排序。
您可以將數據放入與哈希圖相同的linkedhasmap中,如下所示
LinkedHashMap<String,String> lH = new LinkedHashMap<String,String>();
lH.put(id,name);
在自動完成文本視圖中進行以下操作
autoCompleteTextView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View arg1, int pos,
long id) {
String key = (new ArrayList<String>(lH.keySet())).get(pos);
you will have your id in key
}
});
您也可以通過從列表器中初始化lH.keySet來提高效率,另外請參閱http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMap.html中的LinkedHashMap
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.