完成查询后列出重新排列

时间:2012-05-08 05:42:37

标签: android sqlite listview sqliteopenhelper

创建可搜索的联系人类型的应用程序。以下是我的代码

public class EmployeeList extends Activity {

    protected EditText searchText;
    protected SQLiteDatabase db;
    protected Cursor cursor, listcursor;
    protected ListAdapter adapter;
    protected ListView employeeList;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        db = (new DatabaseHelper(this)).getWritableDatabase();
        searchText = (EditText) findViewById (R.id.searchText);
        employeeList = (ListView) findViewById (R.id.list);

        listcursor = db.rawQuery("SELECT * FROM employee",null);

        adapter = new SimpleCursorAdapter(
                this, 
                R.layout.employee_list_item, 
                listcursor, 
                new String[] {"firstName", "lastName", "title"}, 
                new int[] {R.id.firstName, R.id.lastName, R.id.title});
        employeeList.setAdapter(adapter);
    }

        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);

                                        }

}

问题是在清除edittext中的单词之后。它应该回到之前的列表视图,即它应该显示数据库中的所有值。

enter image description here

1 个答案:

答案 0 :(得分:2)

您应该使用带有EditText的FilterQueryProvider来更新对ListView的多个更新,而不是使用第二个游标,就像AutoCompleteTextView一样。

或者您可以添加TextWatcher,并在长度变为零时将光标更改回第一个。