我正在使用Richfaces 4.1.0 final,我想计算过滤后显示的行数。我正在使用自定义过滤功能:
public Filter<?> getSessionNameFilterImpl() {
Filter<Object> temp = new Filter<Object>() {
@Override
public boolean accept(Object item) {
if (sessionNameFilter(item)) {
return true;
} else {
filtered--; //counter for recording how many rows were denied
return false;
}
}
};
return temp;
}
private boolean sessionNameFilter(Object item) {
//filter implementation here
}
我尝试使用计数器(名为&#39;过滤&#39;),但其值不变。
答案 0 :(得分:0)
public Filter<?> getSessionNameFilterImpl() {
Filter<Object> temp = new Filter<Object>() {
@Override
public boolean accept(Object item) {
if (sessionNameFilter(item)) {
all.add(item);
return true;
} else {
all.remove(item);
return false;
}
}
};
return temp;
}
public Integer getTotalShow(){
return all.size();
}
private Set all = new HashSet();
注意:必须调用all.clear();当您更新数据表源。
答案 1 :(得分:0)
假设list
是您的对象列表
在过滤器的开头重置计数器,每次过滤对象时增加计数器(return false
),然后显示列表的大小减去filtered
计数器:
...
List<Object> list;
int filtered;
...
public Filter<?> getSessionNameFilterImpl() {
filtered = 0;
Filter<Object> temp = new Filter<Object>() {
@Override
public boolean accept(Object item) {
if (sessionNameFilter(item)) {
return true;
} else {
filtered++; //counter for recording how many rows were denied
return false;
}
}
};
return temp;
}
public int getRowCount(){
return list.size()-filtered;
}