現在我正在使用edittext和listview在android中製作一個程序。我想使用上面的edittext搜索listview項目。將數據填充到列表視圖後,當用戶在edittext中鍵入文本時,listview將滾動到以該文本開始的位置。例如:我有項目:蘋果,應用程序,書籍,男孩,汽車,貓,現金.....當我在edittext中鍵入b然後listview將滾動到書。我想使用listview.setSelection(position),但我不知道如何從我的edittext搜索中獲得位置。我希望每個人都可以幫助我。感謝進步!Android Listview從edittext搜索
回答
您可以在以下步驟中執行此操作。
- 檢查輸入的單詞是否在您的列表視圖中可用。
- 如果是,則分別在數組列表或您的列表視圖中獲取該單詞的id或位置。
- 然後將選擇設置爲檢索的ID。
如果你仍然無法得到ID,然後在認罪後您使用的字符串數組的自定義陣列適配器
Sol的代碼:
在你的情況下,它也能像
這代碼應該在你的oncreate或無論你在哪裏啓動你的列表視圖
HashMap<String,String> map=new HashMap<String, String>();
for(int i=0; i<arrlist.size();i++)
{
map.put(arrlist.get(i).trim().toLowerCase(), ""+i+1);
}
要獲得值米哈希映射 此代碼將您的搜索按鈕,點擊
String id= map.get("yourserchitem")
lv.setSelection(Integer.parseInt(id)-1);
上的文字換寫這段代碼 這裏e是我editext
e.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
if(arr.contains(e.getText().toString().trim().toLowerCase()))
{
String id= map.get(e.getText().toString().trim().toLowerCase());
lv.setSelection(Integer.parseInt(id)-1);
}
}
});
變化代碼中afterTextChanged的對象與
String middle_string="";
for(int i=0;i<arr.size();i++)
{
if(arr.get(i).startsWith(e.getText().toString().trim().toLowerCase()))
{
middle_string=arr.get(i);
break;
}
}
if(arr.contains(middle_string))
{
String id= map.get(middle_string);
lv.setSelection(Integer.parseInt(id)-1);
}
我已經測試過它:它的工作,但我有超過20,000條目,所以每次我的編輯文本改變:它必須循環找到id,然後選擇該ID。所以,這使我的程序運行緩慢。我該如何讓它運行得更快? : 對(INT I = 0; I <則爲list.size();我++) \t \t \t { \t \t \t \t如果(list.get(ⅰ).toLowerCase()startsWith(S。的toString())) \t \t \t \t { \t \t \t \t \t POS = I; \t \t \t \t \t break; \t \t \t \t \t} \t \t \t \t} \t \t lv.setSelection(POS); –
然後您應該將每個條目與一個id關聯。你可以使用哈希映射。在哈希映射中,使用name作爲key和id作爲值,而不是遍歷完整列表,只需在搜索按鈕的單擊上通過傳遞名稱作爲鍵,就可以簡單地獲取id。 –
親愛的主席先生,你能告訴我更多關於如何使用哈希映射的細節嗎? 請告訴我關於此的代碼!謝謝 –
你有沒有聽說過AutoCompleteTextView(ACTV)。
只需傳遞你必須ACTV的單詞數組。所以當用戶開始輸入時,會根據您擁有的單詞列表來預測單詞。這更像是Google即時搜索。請嘗試並讓我們知道
我知道它!但在我的情況下,我想用listview!你能告訴我怎麼辦? –
- 1. 用EditText在ListView中搜索
- 2. Android:使用editText和自定義標籤從listView中搜索
- 3. Android搜索Listview從JSON使用EditText複製項目
- 4. android - 搜索listview?
- 5. Android ListView搜索
- 6. 帶editText的搜索功能 - ListView
- 7. Android EditText像谷歌搜索EditText
- 8. 從Edittext到Listview行動畫的搜索查詢
- 9. android:如何通過ListView中的edittext(searchbar)搜索行
- 10. Android ListView和EditText
- 11. android如何在從csv文件獲取時在edittext中搜索listview的項目?
- 12. Android ListView搜索和焦點
- 13. Android ListView API - 搜索列表
- 14. listView在android中搜索?
- 15. ListView搜索工具Android
- 16. 搜索ListView中的Android
- 17. Android的Listview搜索功能
- 18. ListView內的Android EditText?
- 19. ListView中的Android EditText
- 20. ListView中的Android EditText
- 21. Android從EditText檢索數據
- 22. 在Edittext中進行實時搜索Android
- 23. 將Google搜索集成到Android EditText
- 24. 從listView填充editText
- 25. 即時在xamarin中使用edittext搜索功能使用edittext android
- 26. Focus Android中的EditText和ListView
- 27. android-自定義listview與edittext
- 28. Android的ListView和EDITTEXT箱
- 29. ListView中的Android EditText - 鍵盤
- 30. Android - ListView EditText焦點問題
我想你正在使用textwatcher ..要麼你維護一個單獨的arraylist過濾列表或比較id的內容 – Carbon