Форум программистов, компьютерный форум CyberForum.ru

Фильтрация ListView из EditText - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android Обработка информации с камеры http://www.cyberforum.ru/android-dev/thread1464220.html
Добрый день. Разработка ведется на xamarin, но как я понимаю, проблема в основном формате данных, не в языковой обертке. Если я не прав смело посылайте меня на форум xamarin. Для получения информации с камеры использую событие void OnPreviewFrame(byte data, Camera camera) Ко мне прилетает массив длинной 1036800 байта. При этом система утверждает, что разрешение камеры 640x480, т.е. массив в...
Android вывод данных из url в WebView вот допустим у меня есть url https: //oauth.vk.com/blank.html#access_token=данные&expires_in=данные&user_id=данные. так вот, в чем весь вопрос, мне нужно получить данные из полей access_token,expires_in и user_id, не знаю как это сделать, подскажите и еще, хотел спросить, как мне определить по url когда именно мне эти данные собирать? то есть мне нужны данные именно тогда, когда url в webView... http://www.cyberforum.ru/android-dev/thread1464143.html
Android Ошибка в запросе
Нужен такой запрос: SELECT WORDRUS FROM WORd_level3 WHERE WORDENG="borrow" (слово к примеру). При выполнении такого запроса в DB Browser for sqlite всё хорошо, возвращает нужное слово. Но по нажатию кнопки ans1 вылетает и пишет: android.database.sqlite.SQLiteException: no such column: borrow: , while compiling: SELECT DISTINCT wordRUS FROM word_level3 WHERE wordENG=borrow Подскажите,...
Android Genymotion unknown generic error
При поытке создать виртуальное устройство (эмулятор) в genymotion ввожу логин и пароль тот что у меня на сайте. В итоге аутентификацию пройти не удается genymotion пишет "unknown generic error". Виртуал бокс я поставил(установлен)не ставил на него только операционку не запускал. Что делать как пройти аутентификацию и создать устройство genymotion??
Android Как добавлять дополнительные данные http://www.cyberforum.ru/android-dev/thread1463947.html
Скажите как действовать в данной ситуации Допустим, я заполняю Listview У меня внутри есть картинка и текст. Но так же мне над передать дополнительные параметры, к примеру ID, ссылку ну или еще какие-либо параметры, которые относятся только к текущему Listview item. Конечно я могу сделать еще несколько дополнительных textview и вставить нужные значения (ID, URL и так далее). Но а...
Android Растворение фона Я сделал программу наподобие хаотичного движения газов, и мне нужно чтобы при запуске они растворялись(увеличивали свою прозрачность). У меня все вышло,только после их растворения они снова становятся полностью непрозрачными и процесс повторяется(Попробовал ограничить условием в цикле перебора шариков(alpha<=0) { break}, но выходит что при запуске все уже растворилось и анимации нету(Подскажите,... подробнее

Показать сообщение отдельно
LGW
0 / 0 / 0
Регистрация: 14.02.2014
Сообщений: 2
31.05.2015, 20:07     Фильтрация ListView из EditText
Не могу разобраться с фильтрацией в ListView. Фильтрация происходит правильно (находит нужное количество), но выводит не те, которые нужно (например не 1, 3 и 5), а первые из списка(1-3).
MainActivity:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
private EditText etSearch; // Строка для поиска
private List<Passenger> list; // лист объектов
private List<Passenger> allPassenger; // буферный лист для всех объектов
 
private ListView lv; //ListView
private ArrayAdapter<Passenger> adapter; // адаптер
 
...
 
etSearch = (EditText)findViewById(R.id.etSearch);
 
 
// инициализация массивов элементов
list = new ArrayList<>();
lv = (ListView)findViewById(R.id.lvPassengers);
adapter = new PassengerAdapter(this);
 
...
// заполнение массивов объектами
list.add(new Passenger(id, surname, numberCar, typeCar, positionTypeCar, terminal, positionTerminals, date));
allPassenger = new ArrayList<>(list);
 
 // вывод колличества объектов
 tvAll.setText(String.valueOf(adapter.getCount()));
 lv.setAdapter(adapter);
 // поиск через EditText
 etSearch.addTextChangedListener(new TextWatcher() {
 
        @Override
        public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
            adapter.getFilter().filter(cs);
        }
 
        @Override
        public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                                      int arg3) {
            // TODO Auto-generated method stub
 
        }
 
        @Override
        public void afterTextChanged(Editable arg0) {
            // TODO Auto-generated method stub
        }
    });
Класс Passenger:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Passenger {
    public final int id;
    public final String surname;
    public final String numberCar;
    public final String typeCar;
    public final int positionTypeCar;
    public final String terminal;
    public final int positionTerminal;
    public final String date;
 
    public Passenger(int id, String surname, String numberCar, String typeCar, int positionTypeCar, String terminal, int positionTerminal, String date) {
        this.id = id;
        this.surname = surname;
        this.numberCar = numberCar;
        this.typeCar = typeCar;
        this.positionTypeCar = positionTypeCar;
        this.terminal = terminal;
        this.positionTerminal = positionTerminal;
        this.date = date;
    }
}
Адаптер и фильтр:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
private class PassengerAdapter extends ArrayAdapter<Passenger> implements Filterable {
    public PassengerAdapter(Context context) {
        super(context, R.layout.list_item, list);
    }
 
    @Override
    public int getCount (){
      return list.size();
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        Passenger passenger = getItem(position);
 
        if (convertView == null) {
            convertView = LayoutInflater.from(getContext())
                    .inflate(R.layout.list_item, null);
        }
        ((TextView) convertView.findViewById(R.id.surname))
                .setText(passenger.surname);
        ((TextView) convertView.findViewById(R.id.numberCar))
                .setText(passenger.numberCar);
        ((TextView) convertView.findViewById(R.id.typeCar))
                .setText(passenger.typeCar);
        ((TextView) convertView.findViewById(R.id.date))
                .setText(passenger.date);
        ((TextView) convertView.findViewById(R.id.terminal))
                .setText(passenger.terminal);
        return convertView;
    }
    @Override
    public Filter getFilter() {
        Filter filter = new Filter() {
 
            @Override
            protected FilterResults performFiltering(CharSequence constraint) {
                FilterResults result = new FilterResults();
                if(constraint == null || constraint.length() == 0){
                    result.values = allPassenger;
                    result.count = allPassenger.size();
                }
                else{
                    ArrayList<Passenger> filteredList = new ArrayList<>();
                    for(Passenger p: allPassenger){
                        if(p.surname.toLowerCase().contains(constraint))
                            filteredList.add(p); //Где то здесь ошибка
                    }
                    result.values = filteredList;
                    result.count = filteredList.size();
                }
                return result;
            }
 
            @SuppressWarnings("unchecked")
            @Override
            protected void publishResults(CharSequence constraint, FilterResults results) {
                list = (ArrayList<Passenger>) results.values;
                tvAll.setText(String.valueOf(results.count));
                notifyDataSetChanged();
            }
        };
        return filter;
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru