Вы можете установить TextWatcher для своего окна поиска и изменить свой курсор на onTextChanged () на TextWatcher, например, коды ниже:
TextWatcher filterNameTextWatcher = new TextWatcher()
public void beforeTextChanged(CharSequence s, int start, int count,int after)
{
}
public void onTextChanged(CharSequence s,int start, int before,int count)
{
Cursor FilteredNameList = ZoneCardDBAdapter.instance.CursorFilteredName(s.toString());
Listadapter.changeCursor(FilteredNameList);
}
@Override
public void afterTextChanged(Editable arg0)
{
}
};
EditText filterTextName = (EditText)this.findViewById(R.id.edtZoneCardNameFilter);
filterTextCPName.addTextChangedListener(filterNameTextWatcher);
Такая функция называется вариационной функцией . Вы можете объявить его в C, используя ...
, например:
int f(int, ... );
Затем вы можете использовать va_start
, va_arg
и va_end
для работы со списком аргументов. Вот пример:
#include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>
void f(void);
main(){
f();
}
int maxof(int n_args, ...){
register int i;
int max, a;
va_list ap;
va_start(ap, n_args);
max = va_arg(ap, int);
for(i = 2; i <= n_args; i++) {
if((a = va_arg(ap, int)) > max)
max = a;
}
va_end(ap);
return max;
}
void f(void) {
int i = 5;
int j[256];
j[42] = 24;
printf("%d\n",maxof(3, i, j[42], 0));
}
Для получения дополнительной информации см. The C Book и stdarg.h .
Эта функция называется Переменное количество аргументов в функции . Вы должны включить заголовочный файл stdarg.h ; затем используйте функции типа va_list и va_start , va_arg и va_end в теле вашей функции:
void print_arguments(int number_of_arguments, ...)
{
va_list list;
va_start(list, number_of_arguments);
printf("I am first element of the list: %d \n", va_arg(list, int));
printf("I am second element of the list: %d \n", va_arg(list, int));
printf("I am third element of the list: %d \n", va_arg(list, int));
va_end(list);
}
Затем вызовите вашу функцию вроде этого:
print_arguments(3,1,2,3);
, который распечатает следующее:
I am first element of the list: 1
I am second element of the list: 2
I am third element of the list: 3
Способ, которым это делается в C, называется "varargs". Здесь есть руководство по этому поводу: http://c-faq.com/~scs/cclass/int/sx11b.html
Как уже говорили другие, printf для работы использует va_args. Это довольно крутое упражнение - написать свою собственную версию printf, по крайней мере, для проверки того, что printf, в отличие от Writeln Паскаля, не является магией компилятора. После того, как вы это сделаете, вы должны уйти от этого. Вот статья в блоге , которую я написал, в которой подробно объясняется, почему (краткий ответ - вы можете создавать ошибки, которые могут оставаться незамеченными в течение длительного времени).