【问题标题】:Return empty row in Custom ArrayAdapter?在自定义 ArrayAdapter 中返回空行?
【发布时间】:2010-05-28 18:01:43
【问题描述】:

当我的 ListView 被自定义 Array Adapter 填充时,我会检查当前列表项中的某个参数,如果为 false,我想返回一个空行。目前,我通过膨胀一个空的 xml 文件来做到这一点,但是当不应该显示许多项目时,这会创建丑陋的列表项目分隔线,并且显然不是最好的方法;-)!

    if (list.get(position).equals("i-dont-want-this-in-the-list-view")){
        View empty=inflater.inflate(R.layout.empty_row, parent, false);
        return(empty);
    }

我试图返回“null”,但它显然希望返回一个视图。有什么我可以做的,而不必事先过滤用于 ListView 的列表(我想保持它完好无损,因为我也在用它做其他事情)。

谢谢,

尼克

【问题讨论】:

    标签: android listview listadapter


    【解决方案1】:

    要解决分行问题,请从 ListView 中删除分行并将您自己的分行放入各个项目中。

    【讨论】:

    • 哇,这是一个很棒的 - 但同时也非常明显 - 建议。我为自己没有想到这一点而感到愚蠢。非常感谢!
    • 使用stackoverflow.com/questions/1914477/…的代码解决了这个问题
    【解决方案2】:

    ViewsetVisibility 膨胀为VIEW.GONE

    【讨论】:

    • 感谢您的回答!当列表中的许多项目被VIEW.GONE 隐藏时,您的建议并不能阻止灰色列表项目分隔符堆积(这是我想做的),但我想没有办法这样做:-/...
    【解决方案3】:

    关于什么:

    @Override
    public View getView(int position, View convertView, ViewGroup parent)
    {
       //use a global Array to set the rows visible/hidden and return empty rows
       if(disArray[position] == false) return new View(getContext()); 
    
       ... // continue with your getView() implementation
       return convertView;
    }
    

    更新 ListView 使用

    adapter.notifyDataSetChanged();
    

    【讨论】:

      【解决方案4】:

      不为空的行中有什么?图片可以用空的、透明的png代替,文本视图可以设置为“”等。

      【讨论】:

        【解决方案5】:

        View.Gone 会给你一个空的列表行。尝试使用布局参数并将值设置为零,如下所示:

        FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(0,0); viewholder.programRow.setLayoutParams(layoutParams);

        Layoutparams 应该根据使用的父视图组来使用

        【讨论】:

          猜你喜欢
          • 2016-05-21
          • 2017-03-12
          • 2013-03-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-08
          • 1970-01-01
          相关资源
          最近更新 更多