gpt4 book ai didi

java - Wicket:ListView - 跳过一个项目

转载 作者:搜寻专家 更新时间:2023-11-01 01:14:44 26 4
gpt4 key购买 nike

是否可以跳过 populateItem() 中的项目?例如通过在项目组件上设置一些东西,或者其他什么。

ListView view = new ListView("quickLinks", quickLinks) {
@Override
protected void populateItem( ListItem item ){
if( item.getModel(). /*something*/ )
item.skip()
}
};

谢谢

最佳答案

我更愿意过滤我的模型,而不是在 View 中执行 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);
}

现在将您的列表模型包装到其中:

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
}
};

关于java - Wicket:ListView - 跳过一个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4602328/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com