【问题标题】:Searching partial word in a arraylist on android在android上的arraylist中搜索部分单词
【发布时间】:2012-01-29 00:13:31
【问题描述】:

我在搜索一个单词的一部分时遇到很多问题,然后让它找到完整的结果。

就像我搜索“droid”一样,它会在我的列表中查找包含“droid”的任何内容,如果你查看我的数组列表,它应该会找到“Android”

数组列表代码:

private List<String> getModel() {
    List<String> list = new ArrayList<String>();
    list.add("Linux");
    list.add("Windows7");
    list.add("Suse");
    list.add("Eclipse");
    list.add("Ubuntu");
    list.add("Solaris");
    list.add("Android");
    list.add("iPhone");
    return list;
}

这是我的其余代码:

public class idchart extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.idchart);        

    /*Resources res = getResources();        
    ListView listView=(ListView)findViewById(R.id.list);*/


    final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
            android.R.layout.simple_list_item_1, 
            android.R.id.text1,
            getModel());
    setListAdapter(adapter);


    EditText filterEditText = (EditText) findViewById(R.id.srcBox);
    filterEditText.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
            adapter.getFilter().filter(s.toString());
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
        }

        @Override
        public void afterTextChanged(Editable s) {
        }
    });

 }

【问题讨论】:

  • 可以使用基于正则表达式的解决方案。
  • 我很好奇,如何通过正则表达式搜索列表对象?它没有我所知道的内置功能。

标签: java android listview search partial


【解决方案1】:

按照建议,使用正则表达式,据我所知,您必须迭代列表并尝试匹配每个条目。

如果您想避免迭代,您可以对单词的每个字符(如 NGram)使用倒排索引方法。如果您想从用户发送的内容开始搜索文本,您可以使用 Java Map (Commons MultiMap) 来完成。如果您想通过“机器人”进行搜索,那么您必须索引每个字符的位置并检索相关结果。如果没有像 Lucene 这样的库,我不建议这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-07
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    相关资源
    最近更新 更多