简体   繁体   English

使用SimpleAdapter在自定义ListView中搜索

[英]Search in Custom ListView with SimpleAdapter

I'm trying to do Search in my custom listview. 我正在尝试在自定义列表视图中进行搜索。 But when text change in EditText, IF doesn't work. 但是,当EditText中的文本更改时,IF不起作用。 That's my code. 那是我的代码。 I use SimpleAdapter. 我使用SimpleAdapter。 What is wrong ? 怎么了 ?

editText.addTextChangedListener(new TextWatcher() { editText.addTextChangedListener(new TextWatcher(){

 @Override public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) { //get the text in the EditText String searchString= editText.getText().toString(); int textLength=searchString.length(); //clear the initial data set searchResults.clear(); for(int i=0;i<docs.size();i++) { String playerName=docs.get(i).get(FIRST).toString(); if(textLength<=playerName.length()){ //compare the String in EditText with Names in the ArrayList if(searchString.equalsIgnoreCase(playerName.substring(0,textLength))) { searchResults.add(docs.get(i)); Log.i("searchResults", docs.get(i)+""); } else Log.i("doesn't work", "doesn't work"); } } adapter.notifyDataSetChanged(); adapter = new SimpleAdapter(Main.this, searchResults, R.layout.list, new String[] { FIRST, LAST, DATE }, new int[] { R.id.text1, R.id.text2, R.id.date }); listView.setAdapter(adapter); listView.setTextFilterEnabled(true); } @Override public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable arg0) { // TODO Auto-generated method stub } }); 

This is my search in listview. 这是我在列表视图中的搜索。 Using SimpleAdapter for listview. 使用SimpleAdapter进行listview。

 ListView listView; SimpleAdapter adapter; private static ArrayList<HashMap<String, Object>> docs; private static ArrayList<HashMap<String, Object>> searchResults; EditText editText; public void onCreate(Bundle savedInstanceState) { listView = (ListView) findViewById(R.id.list); editText = (EditText) findViewById(R.id.text); docs = new ArrayList<HashMap<String, Object>>(); // values for docs getUrlDocs(false); searchResults = new ArrayList<HashMap<String,Object>>(); editText.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) { int textlength = editText.getText().length(); String searchString= editText.getText().toString(); searchResults.clear(); String attr = null; for (int i = 0; i < docs.size(); i++) { attr = docs.get(i).get(FIRST).toString().trim(); Log.i("attr", attr+""); if (textlength <= attr.length()) { if (searchString.equalsIgnoreCase(attr.substring(0,textlength))) { searchResults.add(docs.get(i)); } } } adapter = new SimpleAdapter(Main.this, searchResults, R.layout.list, new String[] { FIRST, LAST, DATE }, new int[] { R.id.text1, R.id.text2, R.id.date }); listView.setAdapter(adapter); } @Override public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable arg0) { // TODO Auto-generated method stub } }); 

} }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM