【问题标题】:Hide first item in listView Android隐藏listView Android中的第一项
【发布时间】:2015-05-03 02:30:14
【问题描述】:

我正在开发一个 Android 项目,并尝试通过多种方式隐藏 listView 中的第一项:

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

    convertView.setVisibility(View.GONE);

  2. 如果我输入下一个代码,项目会隐藏,但下一个项目会出现在 2px 高度的行中。

    如果(条件){

    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));
    } }

有人可以帮助我吗?

提前致谢

【问题讨论】:

    标签: android listview


    【解决方案1】:

    看看这个answer

    不要将可见性设置为GONE,而是将其设置为空布局

    【讨论】:

      【解决方案2】:

      有三种方法可以做到这一点; 1 使用listview的headview并对其进行控制;

      2将itemlayout添加到viewGroup中,将此viewGroup作为convertView,通过位置控制itemLayout可见与否;

      3 通过不同的item布局使用adapter的viewType

      只是想法..

      【讨论】:

        【解决方案3】:

        我认为最好的选择是隐藏适配器中的第一项:

        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());
        }
        

        并保持适配器正常: ... @覆盖 公共 int getCount() { 返回项目.size(); }

        @Override
        public RssEntry getItem(int position) {
            return items.get(position);
        }
        ...
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-02-07
          • 2016-11-15
          • 1970-01-01
          • 2014-09-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多