我想根据勾选一些选项,做个筛选功能,我用了两种方法,
其中一种是根据筛选的条件,remove这个adapter,然后notifyChange.(这种方式太灵活,造成很多数据同步的问题)
另外一种就是根据筛选条件,在getView()里面让item的高度设置为1,然后设置其为不可见 if (/*筛选条件*/) {
AbsListView.LayoutParams frParam = new  AbsListView.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
convertView.setLayoutParams(frParam);
convertView.setVisibility(View.VISIBLE);
} else {
AbsListView.LayoutParams frParam = new AbsListView.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, 1);
convertView.setLayoutParams(frParam);
convertView.setVisibility(View.GONE);
}
首先这里设置convertView.setVisibility(View.GONE);并不能解决问题, 虽然item的内容消失掉了,但是高度还是那么高,也就是一块空白.所以还需要设置item高度,
然后item的高度设置为0肯定是最完美的,但是设置0没起作用,所以我设置的是1
我现在的做法还是有问题,比如有几百行是不可见的高度为1的item 加起来就会造成一块空白