2016-05-13 2 views
0

Я столкнулся с этими типами вопросов много, но ни один из ответов не решил мою проблему.Android - TextView в пользовательском ListView теряет свой контент при прокрутке

Я разрабатываю мобильную модель приложения для покупок. У меня есть обычай ListView с ImageView и EditText (количество), 2 Buttons для увеличения и уменьшения количества, 3 TextView s для товара Название и другие два для цен, и я динамически загружаю несколько кнопок для NetWeights на основе с помощью Java-кода, и я реализую его с помощью CustomAdapter (Class), расширяющего BaseAdapter и getView().

Задача 1:

Когда я использовать условие if(convertView==null), setTag(holder) и getTag(), динамически загруженные кнопки становятся дублируются и удваивается число.

Задача 2:

При прокрутке обычай ListView я теряю мои данные на 2 из TextView с в то время как другой TextView (имя) отлично, потому что в этом TextView я не изменить данные о времени выполнения , С другой стороны: TextView s (цены) Я изменяю данные во время выполнения с помощью ButtonClicks (увеличение и уменьшение), когда в то время, когда я просматриваю два TextView, он теряет свой контент. На самом деле у меня была такая же проблема с EditText (отображение количества), я решил ее с помощью TextWatcher, получив значение и передав его в массив и снова установив его. Я использовал ту же технику (например, TextWatcher для TextView s Но это не помогло. Я также попытался удалить TextWatcher и установить текст с помощью массива и добавить TextWatcher. Тем не менее я теряю свой контент в тех TextView s

Любые предложения ??????

+0

пытается использовать recyclerview вместо ListView –

+0

опубликовать ваш класс адаптера –

+0

@shayanpourvatan, на самом деле мой код слишком долго, StackOverflow не позволяет мне размещать такой длинный код :( – Joshua

ответ

0

Проблема 1: При использовании ViewHolder (SetTag(), GetTag()) мы будем повторно использовать мнение. Например: предположим, что у нас есть 10 элементов списка, и экран может отображать по 3 элемента за раз. Допустим, мы добавили 2 кнопки, чтобы перечислить элемент 1. В первый раз, когда мы загружаем список, мы увидим две кнопки. Скажем, теперь мы прокручиваем вниз и снова возвращаемся к элементу списка 1, так как мы повторно используем представления, у нас уже есть 2 кнопки, и если у нас есть код для добавления кнопок с помощью getTag(), добавится еще 2 кнопки. Я думаю, что это может вызвать проблему дублирования кнопок. Чтобы добавить немного больше информации, элемент списка 1, элемент списка 4, элемент 7 списка и элемент списка 10 будут использовать одинаковый вид, так как наш экран в этом примере может отображать только 3 элемента.

Задача 2: Одна из идей - сохранить все эти текстовые значения в массиве. Например, предположим, что у нас есть один текстовый элемент внутри каждого элемента списка, который может быть увеличен/уменьшен. Установите textWatcher в этом текстовом элементе и всякий раз, когда текстовые изменения добавят его в атрибут arrrayList, используя «позицию» в качестве индекса. Внутри метода getView, когда вы делаете getTag(), пытайтесь установить textView, используя ранее сохраненный текст (который был сохранен внутри arrayList), если он существует.

+0

Для проблемы 2 я уже устал от вашего предложения.Он работал для EditText, но did'nt работал для TextView :(И еще одно сомнение в том, что ваше предложение работает для EditText, почему оно не работает для TextView? – Joshua

+0

Для проблемы 1, я думаю, что вы говорите правильно. проблема, поэтому, как бы вы предложили мне ее решить. – Joshua

+0

Я решил проблему дублирования (т.е.) Проблема 1. Спасибо :) – Joshua

Смежные вопросы