Найдите через несколько атрибутов в XML

Это происходит потому, что вы добавляете новый TextWatcher каждый раз, когда ваш ViewHolder связан с представлением. RecyclerView правильно перерабатывает ViewHolders, поэтому, когда он использует уже созданный, он просто добавляет новый TextWatcher.

Вы можете изменить способ использования этого, зарегистрировав TextWatcher при создании ViewHolder, чтобы вам не приходилось иметь дело с непрерывными привязками слушателя. Итак, в вашем конструкторе ViewHolder после привязки вашего EditText вы можете добавить TextWatcher, например, так:

this.etName = root.findViewById(R.id.yourEtID); // I'm sure you're doing something very similar to this in your VH's constructor
this.etName.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

       }
        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
        }
        @Override
        public void afterTextChanged(Editable editable) {
            System.out.println(etName.getTag());
        }
    });

Вы заметите, что на этот раз я использовал etName.getTag () для чтения позиция. Это очень полезно, потому что теперь вы можете просто изменить свой onBindViewHolder, чтобы он выглядел так:

@Override
public void onBindViewHolder(MyViewHolder holder, final int position) {
    holder.etName.setTag(position);
}

Просто не стесняйтесь спрашивать, если что-то неясно.

8
задан Deduplicator 1 February 2015 в 14:04
поделиться

3 ответа

Для поиска то, что Вы хотите в отрывке XML Вас, если, Вам было бы нужно следующее выражение XPath:

/APIS/API/field[@Username='username1' and @UserPassword='password1']

Это или возвратило бы что-то, если соответствие имени пользователя и пароля - или не, если они не делают.

Конечно, выражение XPath является просто строкой - можно создать его динамично со значениями, которые вводились в поле формы, например.

Если Вы скажете, в каком языке/среде Вы находитесь, то примеры кода, отправленные здесь, вероятно, станут более конкретными.

Это - способ сделать это в C# (VB.NET аналогичен):

// make sure the following line is included in your class
using System.Xml;

XmlDocument xmldoc = new XmlDocument();
xmldoc.Load("your XML string or file");

string xpath = "/APIS/API/field[@Username='{0}' and @UserPassword='{1}']";
string username = "username1";
string password = "password1";

xpath = String.Format(xpath, username, password);
XmlNode userNode = xmldoc.SelectSingleNode(xpath);

if (userNode != null)
{
  // found something with given user name and password
}
else
{
  // username or password incorrect
}

Знайте, что ни имена пользователей, ни пароли не могут содержать одинарные кавычки, или вышеупомянутый пример перестанет работать. Вот некоторая информация об этой особенности.

От доступной Microsoft существует также практическое руководство: КАК К: Используйте Систему. Xml. Класс XmlDocument для Выполнения Запросов XPath в Визуальной.NET C#

26
ответ дан 5 December 2019 в 05:46
поделиться

XML поиска - то, для чего был сделан XPath. Вы не указывали, какой язык Вы используете, но здесь статья об обработке XML использование XPath в Java и здесь тот с помощью C#.

2
ответ дан 5 December 2019 в 05:46
поделиться

Это - FAQ о выражениях XPath.

Одно или несколько выражений XPath (чей оцененный тип является булевской переменной), могут быть соединены вместе с помощью булевых операторов "и" и "или" и с помощью функции XPath не ().

Действительно обратите внимание, что названия их - все в нижнем регистре. XPath чувствителен к регистру, и любая другая капитализация этих имен (такой как "И") не будет распознана как название логических операторов.

Так, в данном случае требуемое выражение XPath будет чем-то как следующим:

/*/*/field[@Username = your-ds-username and @UserPassword = your-ds-UserPassword]

где your-ds-username и your-ds-UserPassword должен быть заменен с соответствующими значениями, которые Вы хотите использовать от набора данных.

1
ответ дан 5 December 2019 в 05:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: