разные взгляды в одном списке (Android) - PullRequest
3 голосов
/ 30 июня 2010

Есть ли способ составить список с разными видами?Я имею в виду, что строка в позиции X будет иметь макет "X.xml", а строка Z будет иметь макет "Y.xml"?

Я пытался манипулировать ListRowAdapter () и getView () в несколькихпути, но безуспешно ...

Ответы [ 3 ]

7 голосов
/ 30 июня 2010

Привет, есть ли способ сделать список с различными представлениями?Я имею в виду, что строка в позиции X будет иметь макет «X.xml», а строка Z будет иметь макет «Y.xml»?

Конечно.

Шаг # 1: Создатькласс Adapter, расширяя BaseAdapter, ArrayAdapter, CursorAdapter и т. д.

Шаг # 2: Реализуйте getViewTypeCount(), чтобы вернуть количество различных типов строк

Шаг # 3: Реализуйте getItemViewType(), чтобы вернуть число между 0 и значением, возвращаемым getViewTypeCount(), указывая, какой тип строки будет использовать данная позиция

Шаг # 4: Переопределить getView() (или newView() и bindView() для CursorAdapter) и создайте правильный ряд

0 голосов
/ 30 июня 2010

Я решил это по-другому: в ListRowAdapter -> getView () я сделал оператор if () для инфлятора:

LayoutInflater inflater=context.getLayoutInflater();
View row=inflater.inflate(R.layout.X, null);
if(somthing)
{
row=inflater.inflate(R.layout.Y, null);
//whatever
}
and in the end: return row;

работает как шарм:)

0 голосов
/ 30 июня 2010

Я не думаю, что есть простой способ сделать это из коробки.В зависимости от того, насколько отличаются ваши макеты, вы можете создать один макет, а затем показать или скрыть его элементы в getView в зависимости от строки.Если вы установите элемент в Layout.GONE, его как будто его там нет.

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