@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewTag viewTag;
if(convertView == null) {
convertView = myInflater.inflate(R.layout.row_item, null);
viewTag = new ViewTag((LinearLayout)convertView.findViewById(R.id.row), (TextView)convertView.findViewById(R.id.tv));
convertView.setTag(viewTag);
}
else {
viewTag = (ViewTag) convertView.getTag();
}
viewTag.tv.setText(lvt.getTextAt(position));
viewTag.tv.setVisibility(View.VISIBLE);
boolean show = lvt.getShowAt(position);
if(show) {
viewTag.tv.setVisibility(View.GONE);
viewTag.ll.setVisibility(View.GONE);
}
else {
viewTag.ll.setVisibility(View.VISIBLE);
}
return convertView;
}
我使用上面的代码在 BaseAdapter中显示list view。
Lvt是一个程序中的全局数据。
如果显示是 true,我想隐藏 cell,但不能删除数据。
但是我的方法不显示数据,但是显示分割线。
如何隐藏 ListView 中的一些 cell?
直接item设置Visable和Gone是不能解决的,因为还是会留下一个null的item(占位置)
最好的方法就是构建数据的时候,类似List<Bean> beans
这种
Bean中有属性
private boolean isVisable = false;
//getter setter
public void setVisable(boolean isVisabele) {
this.isVisable = isVisable;
}
public boolean isVisable(){
return this.isVisable();
}
直接在setAdapter前把isVisable = gone 的排除掉
再设置adapter,把去除后的List传递进去
哥,我明白你的意思,你可以试着这样做,一定可以的:
1、分割线不要用默认的,自己在cell的布局里实现,这点应该没问题吧?
2、把你的cell的布局用layout包一层,如下面:
<Relativelayout>
<Relativelayout
android:id="@+id/这一层是你要添加的,如果需要隐藏时,设置这一层visible为gone">
<Textview/>
<Textview/>
</Relativelayout>
</Relativelayout>
你包着的东西为gone时,是不占空间的,界面上表现出来的就是这个cell没有了
view.setVisable(View.GONE)