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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
GoF
5 / 5 / 1
Регистрация: 09.03.2014
Сообщений: 23
#1

Как в TextWatcher можно однозначно идентифицировать EditText, который меняется? - Программирование Android

18.10.2014, 02:54. Просмотров 1069. Ответов 3
Метки нет (Все метки)

Доброго времени суток. Я хотел бы поинтересоваться как в TextWatcher можно однозначно идентифицировать EditText, который меняется. Можно сделать свою реализацию для TextWatcher и в конструкторе принимать EditText, но мне нужно массив из EditText дабы архитектурно всё было красивей.(Не буду же на каждое поле отдельно анонимный класс делать). Если у кого есть какие - то идеи, то посоветуйте пожалуйста. Спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2014, 02:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как в TextWatcher можно однозначно идентифицировать EditText, который меняется? (Программирование Android):

EditText смещается вниз при вводе текста, который занимает объём больше, чем EditText - Программирование Android
EditText сещается вниз при вводе текста который занимает обём больше чем EditText. Как устранить?

Взять символы с EditText и прировнять их к переменным.Как это можно сделать? - Программирование Android
Кто знает как можно осуществить вот это. Например: Есть поле editText __02.__08.__1994__ Как взять строку и разделит на символы. ...

Ввод в один EditText и авто-вычисление в двух других EditText - Программирование Android
Всем привет. Есть три поля EditText,виртуальные клавиатуры у всех заблокированы,а ввод чисел в поле осуществляется с Button(ов). Вопрос...

Несколько Textwatcher - Программирование Android
Не считает несколько TextWatcher, помогите. import android.os.Bundle; import android.app.Activity; import...

TextWatcher. При добавлении в проект вылет - Программирование Android
Доброго времени суток. На активити есть EditText, хочу добавить в проект обработчик изменения текста в этом элементе. Во всемогущем...

Как однозначно идентифицировать конфигурацию установленную у клиента? - 1С
Добрый день всем. Возможно я неверно объясню или не доходчиво, прошу извинить за это, заранее. Задача такая - есть компьютер на нем...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
18.10.2014, 08:54 #2
Java
1
2
3
4
5
6
editText.setTag(tag);
//watcher
Int tag = view.getTag;
switch(tag){
//....
}
0
GoF
5 / 5 / 1
Регистрация: 09.03.2014
Сообщений: 23
18.10.2014, 12:01  [ТС] #3
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
editText.setTag(tag);
//watcher
Int tag = view.getTag;
switch(tag){
//....
}
Проблема в том, что в Watcher нет ссылки на view которое его вызвало ...

Добавлено через 6 минут
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
public class OnChangeListener {
    private Map<Integer, View> viewMap;
    TextWatcher a = new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {
 
        }
 
        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
            //Здесь нужно узнать какое именно View вызвало этот метод, если для всех установлен один обработчик )
        }
 
        @Override
        public void afterTextChanged(Editable editable) {
 
        }
    };
    public OnChangeListener(ViewMap viewMap ,TextWatcher textWatcher){
        this.viewMap = viewMap.getViewMap();
        for(int k:this.viewMap.keySet()){
            ((EditText)this.viewMap.get(k)).addTextChangedListener(textWatcher);
        }
    }
}
Вот так всё должно выглядеть ) в моих мыслях )
0
YuraAAA
1574 / 1316 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
18.10.2014, 12:37 #4
А почему бы не расширить EditText?
1. Делаем свой шикарный интерфейс

Java
1
2
3
4
5
6
7
8
9
10
11
12
import android.text.Editable;
import android.widget.EditText;
 
public interface AwesomeTextWatcher {
 
    public void beforeTextChanged(EditText targetEditText, CharSequence s, int start, int count, int after);
 
    public void onTextChanged(EditText targetEditText, CharSequence s, int start, int before, int count);
 
    public void afterTextChanged(EditText targetEditText, Editable s);
 
}
2. Делаем свой EditText:

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
import android.content.Context;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.widget.EditText;
 
public class AwesomeEditText extends EditText implements TextWatcher {
 
    private AwesomeTextWatcher watcher;
 
 
    public void setWatcher(AwesomeTextWatcher watcher) {
        this.watcher = watcher;
    }
 
    public AwesomeEditText(Context context) {
        super(context);
    }
 
    public AwesomeEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
 
    public AwesomeEditText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }
 
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        if (watcher != null) {
            watcher.beforeTextChanged(this, s, start, count, after);
        }
    }
 
    @Override
    public void afterTextChanged(Editable s) {
        if (watcher != null) {
            watcher.afterTextChanged(this, s);
        }
    }
 
    @Override
    public void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter) {
        super.onTextChanged(text, start, lengthBefore, lengthAfter);
        if (watcher != null) {
            watcher.onTextChanged(this, text, start, lengthBefore, lengthAfter);
        }
    }
}
3. Где надо вызываем

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
.setWatcher(new AwesomeTextWatcher() {
            @Override
            public void beforeTextChanged(EditText targetEditText, CharSequence s, int start, int count, int after) {
                
            }
 
            @Override
            public void onTextChanged(EditText targetEditText, CharSequence s, int start, int before, int count) {
 
            }
 
            @Override
            public void afterTextChanged(EditText targetEditText, Editable s) {
 
            }
        });
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2014, 12:37
Привет! Вот еще темы с ответами:

Можно ли как-то идентифицировать того клиента, который вызывает метод - C#
Доброго времени суток! Есть следующий код: Объект на сервере, который передаётся нескольким клиентам по принципу Singletone. Так...

Как можно идентифицировать броузер Netscape? - C# ASP.NET
Компонент 'MSWC.BrowserType' берет информацию из файла browscaps.ini но по каким то причинам Netscape 4.75 &amp; 6.x не регистрируется в нем....

Можно ли однозначно заменить выражение: $arr1[ f1() ][ f2() ] += f3(); - PHP
Можно ли однозначно заменить выражение $arr1 += f3(); на более простые составляющие. Нужен универсальный вариант. Предполагается...

нужно написать прогу который по временным трендам сможет идентифицировать объект управления по методу наименьших квадрантов - Matlab
нужно написать прогу который по временным трендам сможет идентифицировать объект управления по методу наименьших квадратов желательно с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.10.2014, 12:37
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru