我正在开发一个Android项目,我试图隐藏listView中的第一项有几种方式:
如果我输入下一个代码,则空格不会从listView中消失。
convertView.setVisibility(View.GONE);
如果我输入下一个代码,该项会隐藏,但下一个项目会显示为2px高度的行。
if(condition){
convertView.setLayoutParams(new AbsListView.LayoutParams(-1,1)); convertView.setVisibility(View.GONE);
}其他{
if(convertView.getVisibility()== View.GONE){
convertView.setVisibility(View.VISIBLE);
convertView.setLayoutParams(new AbsListView.LayoutParams(-1,-2));
} }
有人可以帮助我吗?
提前致谢
答案 0 :(得分:0)
看看这个answer
而不是将GONE
的可见性设置为空布局
答案 1 :(得分:0)
有三种方法可以做到这一点; 1使用listview的headview并控制它;
2将itemlayout添加到viewGroup中,将此viewGroup作为convertView,并通过位置控制itemLayout是否可见;
3使用不同项目布局的适配器viewType
只是想法..答案 2 :(得分:0)
我认为最好的选择是隐藏适配器中的第一项:
public class HideFirstItemListAdapter extends BaseAdapter {
private List items;
public RssListAdapter(Context context, List<RssEntry> items) {
this.context = context;
this.items = items;
}
@Override
public int getCount() {
return items.size() - 1;
}
@Override
public RssEntry getItem(int position) {
return items.get(position + 1);
}
@Override
public long getItemId(int id) {
return id;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// ...
}
}
甚至只在构造函数中存储一个子列表:
public RssListAdapter(Context context, List<RssEntry> items) {
this.context = context;
this.items = items.subList(1, items.size());
}
并将适配器保持为正常状态: ... @覆盖 public int getCount(){ return items.size(); }
@Override
public RssEntry getItem(int position) {
return items.get(position);
}
...