Hi, Is there a way to make a list with different views? I mean that row in posiotion X will have layout "X.xml" and row number Z will have layout "Y.xml"?
I've tried to manipulate ListRowAdapter() and getView() in a few ways but with no success...
Hi, Is there a way to make a list with different views? I mean that row in posiotion X will have layout "X.xml" and row number Z will have layout "Y.xml"?
I've tried to manipulate ListRowAdapter() and getView() in a few ways but with no success...
I don't think there is an easy way to do it out of the box. Depending on how different your layouts are, you might be able to come up with a single layout, and then show or hide elements of it in getView depending on the row. If you set an item to Layout.GONE, its as if it isn't there.
Hi, Is there a way to make a list with different views? I mean that row in posiotion X will have layout "X.xml" and row number Z will have layout "Y.xml"?
Sure.
Step #1: Create an Adapter
class, by extending BaseAdapter
, ArrayAdapter
, CursorAdapter
, etc.
Step #2: Implement getViewTypeCount()
to return how many different row types there are
Step #3: Implement getItemViewType()
to return a number between 0
and the value returned by getViewTypeCount()
, indicating which row type a given position will use
Step #4: Override getView()
(or newView()
and bindView()
for CursorAdapter
) and have it create the right row
I solved it in another way: in the ListRowAdapter -> getView() I've made an if() statement on the inflater:
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;
works like a charm :)