Адаптер ListView содержит метод с именем getView
, который вызывается, когда элемент представления списка необходимо отобразить в реальном представлении.Представления в вашем ListView будут отброшены, если вы прокрутите слишком далеко от экрана или лишите законной силы весь ListView.
Я предполагаю, что добавление элемента делает недействительным ListView.
Ваш метод getView долженустановите флажки рисования на вид, который он возвращает.Предполагая, что ваш список отображает String[]
, вам также понадобится boolean[]
, чтобы определить, завершен ли элемент.Вам нужно будет инициализировать это для всех ложных, добавьте completed[i] = !completed[i]
в начале вашего onItemClick
.Затем вы можете проверить competed[i]
вместо isStrikeThruText
в своем операторе if, позже в этом методе.Наконец, ваш getView может выглядеть следующим образом
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(android.R.layout.simple_list_item_1, parent, false);
}
TextView textView = (TextView) convertView;
textView.setText(items[position]);
if (completed[position]) {
textView.setPaintFlags(textView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
} else {
textView.setPaintFlags(textView.getPaintFlags() & (~Paint.STRIKE_THRU_TEXT_FLAG));
}
return textView;
}