0

検索可能な連絡先の種類のアプリを作成します。以下は私のコードです

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

                                        }

}

問題は、編集テキストから単語をクリアした後です。前のリストビューに戻る必要があります。つまり、データベース内のすべての値が表示されます。

ここに画像の説明を入力

4

1 に答える 1

2

2 番目のカーソルを使用する代わりに、EditText でFilterQueryProviderを使用して、AutoCompleteTextView のように ListView に対して複数の更新を実行する必要があります。

または、TextWatcher を追加して、長さがゼロになるたびにカーソルを最初のカーソルに戻すこともできます。

于 2012-05-08T05:53:43.897 に答える