自动搜索按钮(android)

时间:2012-02-08 12:23:34

标签: android listview search click

好的,我一直在关注这个教程http://coenraets.org/blog/android-samples/androidtutorial/ 基本上它给了我我的应用程序所需的确切内容

只有我需要自动搜索按钮(或查询)...

我希望用户打开应用并查看已查询的列表

我也已将本教程集成到Tab应用程序中,因此请记住这一点......

请任何帮助都会很棒!!!非常感谢你抽出宝贵的时间来帮助我解决这个愚蠢的事情

我是一个完整的菜鸟,我正在学习

Thanka再一次!

法迪

2 个答案:

答案 0 :(得分:0)

看这里http://developer.android.com/reference/android/text/TextWatcher.html

试试这个:

EditText searchTo = (EditText)findViewById(R.id.medittext);
searchTo.addTextChangedListener(new TextWatcher() {

    @Override
    public void afterTextChanged(Editable s) {
    }
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        // autoclicked here!
    } 
});

答案 1 :(得分:0)

我认为实现'自动点击'的最佳方式是通过textwatcher-interface:

  

http://developer.android.com/reference/android/text/TextWatcher.html

像这样:

EditText.addTextChangedListener(...)

afterTextChanged(Editable s)
{
//Make your query here using s.getText().toString
//as your WHERE-Clause
}

我建议你,使用TextWatcher进行调试只是为了了解它是如何工作的;) 您还应该考虑此方法可能耗尽大量内存,因为您使用键入的每个字母查询数据库。您可以在

中计算输入的字母数
onTextChanged(CharSequence s, int start, int before, int count)

并将布尔值设置为true,当用户键入超过2个字母并开始查询您的数据库,然后避免过多的内存使用。

编辑:

这是原始搜索方法:

public void search(View view) {
        // || is the concatenation operation in SQLite
                cursor = db.rawQuery("SELECT _id, firstName, lastName, title FROM employee WHERE firstName || ' ' || lastName LIKE ?", 
                                                new String[]{"%" + searchText.getText().toString() + "%"});
                adapter = new SimpleCursorAdapter(
                                this, 
                                R.layout.employee_list_item, 
                                cursor, 
                                new String[] {"firstName", "lastName", "title"}, 
                                new int[] {R.id.firstName, R.id.lastName, R.id.title});
                employeeList.setAdapter(adapter);
    }

现在试试这样:

searchText.addTextChangedListener(new TextWatcher() {

@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
} 
@Override
afterTextChanged(Editable s){
            // || is the concatenation operation in SQLite
                    cursor = db.rawQuery("SELECT _id, firstName, lastName, title FROM employee WHERE firstName || ' ' || lastName LIKE ?", 
                                                    new String[]{"%" + s.getText().toString() + "%"});
                    adapter = new SimpleCursorAdapter(
                                    this, 
                                    R.layout.employee_list_item, 
                                    cursor, 
                                    new String[] {"firstName", "lastName", "title"}, 
                                    new int[] {R.id.firstName, R.id.lastName, R.id.title});
                    employeeList.setAdapter(adapter);
      }
});

代码中有一些空白,你必须自己填写。但这是我第一篇文章背后的基本想法。