Адаптер ListView с произвольным количеством типов строк (Не знаю количество различных типов строк)

Итак, я делаю это приложение. Приложение анализирует веб-сайт или, более конкретно, vbulletin-board. Когда я'Разбирая тему в форуме, я разделил ее так, чтобы при анализе каждого сообщения в этой теме я получал фактическое содержание сообщения в таких разделах, как этот, и сохранял разделы в правильном порядке в массиве. :

[Plain text]
[Quote from somebody]
[Plain text]
[Another quote]
[Another quote again]
[Some more plain text]

Тем не менее, публикация может быть организована в любом порядке, как вы знаете, и может состоять из большего или меньшего количества разделов, чем в примере, и это не так.в нем тоже должны быть кавычки, или это может быть одна или несколько кавычек. Все возможно.

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

То, как я думал о том, чтобы сделать это после того, как немного погуглил об этом, это иметь один "Base-макет» с помощью всего лишь тега макета в одном XML-файле и отдельной компоновки для каждого раздела, хранящихся в отдельных XML-файлах, и при каждом вызове getView () в моем адаптере посмотрите на пост в этой позиции в моем "Пост-лист», а затем перебрать разделы в этом конкретном посте, и раздувать новыйЦитата-макет» за каждый раздел цитаты, хранящийся в посте, и надуйте "Plain-текст-макет» для каждого простого текстового раздела в сообщении. И для каждого из них я заполняю весь контент, принадлежащий этому посту.

Я думаю, что это будет работать, но может быть проблема с производительностью? Как я понимаю, инфляция макета довольно дорогая, и я выиграл 'Я также не могу перерабатывать представление, переданное в getView (), поскольку к нему может быть добавлено несколько разделов, которые могут не понадобиться при следующем вызове getView (). То есть, если я понимаю getView () и переработка несколько.

Это базовый пример того, что я имею в виду с помощью метода getView () адаптера:

@Override
public View getView(int i, View view, ViewGroup viewGroup) {
    // Inflate the base-layout, which the others are added to.
    view = mInflater.inflate(R.layout.forum_post,null);

    View header = mInflater.inflate(R.layout.post_header_layout, null);
    View message = mInflater.inflate(R.layout.post_text_layout, null);
    View quote = mInflater.inflate(R.layout.post_quote_layout, null);

    ((ViewGroup)view).addView(header);
    ((ViewGroup)view).addView(message);
    ((ViewGroup)view).addView(quote);
    return view;
}

А затем раздувать больше цитат-просмотров / сообщений-просмотров по мере необходимости, когда я извлекаю данные из своего списка сохраненных постов.

Базовый макет - это просто тег LinearLayout

Раздуваемые мной макеты - это просто RelativeLayouts с некоторыми TextViews и добавленным ImageView.

Этот код дает такой результат, где у меня естьзаголовок с именем пользователя, изображением и т. д., один разделПростой текст, и одинQuote сечение, Это неКажется, что он все время работает должным образом, потому что, когда я попробовал его, копия списка зависла на заднем плане, а другая прокручивалась поверх него ...

http://s14.postimg.org/rizid8q69/view.png

Есть лучший способ сделать это? Потому что я представляю, что это нет очень эффективный

Ответы на вопрос(3)

Ваш ответ на вопрос