隐藏listView Android中的第一项

时间:2015-03-02 16:35:27

标签: android listview

我正在开发一个Android项目,我试图隐藏listView中的第一项有几种方式:

  1. 如果我输入下一个代码,则空格不会从listView中消失。

      

    convertView.setVisibility(View.GONE);

  2. 如果我输入下一个代码,该项会隐藏,但下一个项目会显示为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));   
      }   }

  3. 有人可以帮助我吗?

    提前致谢

3 个答案:

答案 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);
}
...