Цвет фона ListView для каждой строки Android - PullRequest
0 голосов
/ 12 ноября 2010

Я меняю цвет фона каждой строки, переопределяя onListItemНажмите этот фрагмент кода

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// First time touching the item
if(mLastPosition==-1) {
    mLastPosition = position;
} else {
    mLocalBG.remove(String.valueOf(mLastId));
    v = l.getChildAt(mLastPosition);
    v.setBackgroundColor(Color.WHITE);
    mLastPosition = position;
}
mLocalBG.add(String.valueOf(id));
/* The issue: v is returning null right here, but only when touch a row that was below the first ones displayed, rows that needed to be scrolled down */
v = l.getChildAt(position);
v.setBackgroundColor(Color.LTGRAY);
}

Как уже отмечалось, он работает отлично, пока я не прокручиваю вниз до следующих строк, после этого View v возвращает ноль каждый раз. Почему это происходит?

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 02 ноября 2012

Ну, это лет, но эта строка не делает то, что вы думаете:

v = l.getChildAt(position);

См. ViewGroup # getChildAt ().Этот метод не переопределяется для ListView (хотя, возможно, так и должно быть) и дает только видимые представления.Зачем?Вне прокрутки просмотров не существует!Помните, что те же несколько видов перерабатываются для экономии памяти за счет таких странностей.

Попробуйте это:

v = l.getChildAt(position - l.getFirstVisiblePosition());

Вы также захотите установить правильный фон в своемадаптеры getView().

0 голосов
/ 12 ноября 2010

Добавление дополнительной информации:

ИМХО, это, вероятно, происходит в строках, которые newView не были вызваны.: /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...