У меня есть ListView, где элементы можно удалить щелчком по метке. Этот ListView находится в моем собственном адаптере, который наследует от BaseAdapter. После щелчка на этом ярлыке я вызываю метод, который удаляет элемент из массива данных, хранящегося в моем адаптере.
Каждый элемент содержит некоторые элементы макета и в одном макете TextView. Иногда это мнение должно быть видимым. Но я знаю только, должен ли он быть видимым после раскладки Listview ist! (Я спрашиваю, является ли он эллипсированным). Поэтому я использовал метод post с Runnable.TextView.post Runnable не всегда работает
В моем getView
методе я имею следующее заявление: Runnable
holder.llMyItem.post(new Runnable() {
@Override
public void run() {
if (...) {
holder.lblExpand.setVisibility(View.VISIBLE);
}
}
});
llMyItem
является LinearLayout из элементов в ListView.
lblExpand
- это мой TextView, который должен быть видимым или нет.
В первый раз, когда появляется мой просмотр, он отлично работает на Android 4.3. Но на Android 2.1 он не работает.
Ярлык появляется только после того, как я нажал кнопку «Далее» на моем представлении. Незадолго до того, как моя активность закончится, появится текстовое окно. Но это уже слишком поздно! И есть вторая проблема: После того, как я удалил один элемент в своем списке со следующим методом, он не будет работать после того, как я позвоню notifyDataSetChanged
. Сразу после касания где-то на экране запускается runnable.
Я думаю, что два вопроса имеют один и тот же корень.
Вот код для метода, который удаляет элемент (я упростил)
public void removeListItem(int position) {
//do some animation stuff
ArrayList<SomeClass> data = getData();
data.remove (position);
notifyDataSetChanged();
}
(«элемент удаления вещь» работает нормально)
Я попробовал его с методом ТЕРЯЕТСЯ на ListView перерисовать его. Но он все еще не работает. Runnable не запускается после завершения компоновки.
Может кто-нибудь мне помочь?