Hi,

you could use two nested ListView. You can write something like this in your markup:

<div class="group" wicket:id="groupRepeater">
<div class="item" wicket:id="itemRepeater"></div>
</div>


then in your code you can use component RepeatingView and WebMarkupContainer:


RepeatingView view = new RepeatingView("groupRepeater");

        List<String> itemList = Arrays.asList("a","b","c","d", "e","f");

        for(int i = 0; i * 3 < itemList.size();i++){
WebMarkupContainer container = new WebMarkupContainer(view.newChildId());

            RepeatingView itemView = new RepeatingView("itemRepeater");
itemView.add(new Label(itemView.newChildId(), itemList.get(i + 0))); itemView.add(new Label(itemView.newChildId(), itemList.get(i + 1))); itemView.add(new Label(itemView.newChildId(), itemList.get(i + 2)));

            container.add(itemView);

            view.add(container);
        }

        add(view);


For simplicity I didn't check if index is out of bound (i.e. list size is not multiple of 3).
I am looking to create a grouped listview where each group only contains a 
specific number of items.  For example: I have a list of 5 items and I want 
each group to have 3 items in it.  I would expect the html to look something 
like the following:

<div id="list">
                 <div class="group">
                                 <div class="item">
                                 <div class="item">
                                 <div class="item">
                 </div>
                 <div class="group">
                                 <div class="item">
                                 <div class="item">
                 </div>
</div>

Any ideas on how this can be done?  I obviously can use a listview and get the 
entire list displayed without the grouping but I need to add the grouping.  Is 
there a repeater that does such a thing?

Thanks.





---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to