Как определить макет ListView, не основанный на позиции при утилизации - PullRequest
0 голосов
/ 03 августа 2011

Я расширил CursorAdapter и связал его с ListView.У меня есть два разных макета для строк, и я реализовал getViewTypeCount, getItemViewType, newView и bindView.Данные поступают из таблицы SQL, где в каждой строке есть столбец макета , указывающий, какой тип макета должен иметь этот элемент.

My getViewTypeCount выглядит следующим образом:

@Override
public int getItemViewType(int position) {
int layout = mCursor.getInt(mLayoutIndex);

if (layout == DataHelper.LIST_LAYOUT_ADD_PROJECT)
    return 0;
else
    return 1;   
}

Но, похоже, это мешает переработке представлений.

Как это можно сделать?Или это плохой способ реализовать это?

1 Ответ

0 голосов
/ 03 августа 2011

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

Другая вещь, которую я вижу, это то, что вы не используете предоставленный вам аргумент position, так как вы узнаете, что данные в mCursor соответствуют текущей позиции, которую запрашивают?

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