@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傳遞進去