现在我正在使用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