Ond*_*žka 4 java listview wicket
可以跳过一个项目populateItem()吗?例如,通过在项目组件上设置某些内容或其他内容.
ListView view = new ListView("quickLinks", quickLinks) {
@Override
protected void populateItem( ListItem item ){
if( item.getModel(). /*something*/ )
item.skip()
}
};
Run Code Online (Sandbox Code Playgroud)
谢谢
Sea*_*oyd 10
我更喜欢过滤我的模型,而不是在视图中进行if/else检查.
在这里,使用这个抽象类:
public abstract class FilteredListModel<K> extends LoadableDetachableModel<List<K>>{
private static final long serialVersionUID = 1L;
private IModel<List<? extends K>> inner;
@Override
protected void onDetach(){
inner.detach();
}
public FilteredListModel(IModel<List<? extends K>> inner){
this.inner = inner;
}
public FilteredListModel(List<? extends K> inner){
this.inner = Model.ofList(inner);
}
@Override
protected final List<K> load(){
List<? extends K> input = inner.getObject();
List<K> result = new ArrayList<K>(input.size());
for(K k : input){
if(accept(k))result.add(k);
}
return result;
}
protected abstract boolean accept(K k);
}
Run Code Online (Sandbox Code Playgroud)
现在将列表模型包装到其中:
ListView<String> view = new ListView<String>(
"quickLinks",
new FilteredListModel<String>(quickLinks){
protected boolean accept(String value){
return yourCheckHere();
}
}) {
@Override
protected void populateItem( ListItem<String> item ){
// no ifs here
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3444 次 |
| 最近记录: |