当我的ListView被自定义数组适配器填充时,我检查当前列表项中的某个参数,如果它是false,我想返回一个空行。目前,我通过膨胀空的xml文件来做到这一点,但是当不应该显示多个项目时,这会创建丑陋的列表项目分隔符,并且显然不是最佳方式; - )!
if (list.get(position).equals("i-dont-want-this-in-the-list-view")){
View empty=inflater.inflate(R.layout.empty_row, parent, false);
return(empty);
}
我试图返回“null”,但它显然希望返回一个View。有没有我可以做的事情,而不必事先过滤ListView用于ListView(我想保持完整,因为我也在做其他事情)。
谢谢,
尼克
答案 0 :(得分:6)
要解决线路分隔线的问题,请从ListView中删除线路分隔线,并将它们放入各个项目中。
答案 1 :(得分:3)
将View
和setVisibility
扩展为VIEW.GONE
答案 2 :(得分:1)
关键词:
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
//use a global Array to set the rows visible/hidden and return empty rows
if(disArray[position] == false) return new View(getContext());
... // continue with your getView() implementation
return convertView;
}
更新ListView使用
adapter.notifyDataSetChanged();
答案 3 :(得分:0)
哪些行不是空的?图像可以用空的透明png替换,文本视图可以设置为“”等等。
答案 4 :(得分:0)
View.Gone会给你空列表行。尝试使用布局参数并设置为零值,如下所示:
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(0,0); viewholder.programRow.setLayoutParams(的LayoutParams);
应根据使用的父视图组使用Layoutparams