Jenny
Jenny

Reputation: 545

custom rows in ListView

i have the following problem, I am writing an app that repeats the http://www.rottentomatoes.com/mobile/ website, if you look on the site there are deviders the "Opening this Week", "Top Box Office" and "Also in Theaters" so my question is, how do i add this custom rows to the ListView that holds all the movies

here is what i have so far, please pitch me some ideas so it will look exactly like on the site enter image description here

Upvotes: 0

Views: 48

Answers (1)

matiash
matiash

Reputation: 55340

The easiest way to achieve this would be to include the dividers in the layout of item views. Then make them VISIBLE only when the view maps to the first item of a new category, otherwise leave them as GONE.

Example (in semi-pseudocode):

First, make your item layout like this:

<LinearLayout orientation=vertical>
    <TextView id=divider>
    <your original item layout>
</LinearLayhout>

Then, in the adapter's getView():

Film item = getItem(position);
boolean needsDivider = (position == 0 || getItem(position - 1).filmCategory != film.filmCategory);
if (needsDivider)
{
    dividerView.setVisibility(View.VISIBLE);
    dividerView.setText(getFilmCategoryName(film.filmCategory));
}
else
    dividerView.setVisibility(View.GONE);

A more fancy solution would be to use a library like StickyListHeaders. It doesn't work as your mobile site example, but it's probably even better (e.g. the headers don't scroll up out of the screen).

Upvotes: 1

Related Questions