Автоклик кнопка поиска (Android) - PullRequest
0 голосов
/ 08 февраля 2012

Хорошо, я следовал этому уроку http://coenraets.org/blog/android-samples/androidtutorial/ В основном это дает мне именно то, что мне нужно для моего приложения

* ТОЛЬКО

Мне нужно, чтобы кнопка поиска (или запрос) была автоматически нажата ...

Я хочу, чтобы пользователь открыл приложение и увидел список уже запрошенных

Также я интегрировал это руководство в приложение Tab, так что имейте это в виду ...

Пожалуйста, любая помощь будет удивительной !!! Большое вам спасибо за то, что вы нашли время, чтобы помочь мне с этой глупостью

Я полный нуб, я учусь на ходу

Еще раз большое спасибо!

Фади

Ответы [ 2 ]

0 голосов
/ 08 февраля 2012

Я думаю, что лучший способ добиться «автокликирования» - через интерфейс textwatcher:

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

Есть некоторые пробелы вкод, который вы должны заполнить самостоятельно.Но это основная идея моего первого поста.

0 голосов
/ 08 февраля 2012

Смотрите здесь 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!
    } 
});
...