如何在列表视图中间添加一些空间?

时间:2014-12-08 21:39:34

标签: android listview padding

我试图在列表视图中的第4和第5项之间添加一些额外的空格。我有什么选择?

我尝试在适配器的getView()中执行此操作,以及手动访问第四个元素并向其添加填充。

有更好的方法吗?

3 个答案:

答案 0 :(得分:1)

另一种方法是为第4项使用不同的布局(具有额外的填充)。它与您的解决方案类似,但可能有点“干净”#34;我假设您正在扩展 ArrayAdapter

在适配器中覆盖getViewTypeCount()方法:

@Override public int getViewTypeCount() {
    return 2;
}

这样您就可以告诉您的适配器您将为您的商品使用两种不同的布局。接下来,您必须通过覆盖另一个方法来指定哪些项目属于哪种类型:

@Override public int getItemViewType(int position) {
    if(position == 3) {
        return 0;
    } else {
        return 1;
    }
}

这将告诉适配器对列表中的第4个元素使用不同的视图(仅),并且不会将其重用于其他元素。现在为最后一部分,覆盖 onCreateView()

 @Override public View getView(int position, View convertView, ViewGroup parent) {

    if(convertView == null) {
        LayoutInflater inflater = LayoutInflater.from(context);

        if(position == 3) {
            convertView = inflater.inflate(R.layout.your_layout_with_padding, parent, false);
        } else {
            convertView = inflater.inflate(R.layout.your_regular_item_padding, parent, false);
        } 

        //TODO this is the place to initialize your view holder

    } else {
        //TODO this is the place to restore your view holder
    }

    //TODO setup your view here

    return convertView;
}

对于位置== 3的项目(列表中的第4项),getView()方法的 convertView 参数将为null,因为这是该类型的第一个(也是唯一的)项目列表中的1。因此,您可以为包含该项目的填充的不同布局进行充气。

答案 1 :(得分:0)

我想过某些方法但是如果我必须说实话,唯一能做到这一点的方法是在位置等于4时更改适配器中的布局。我的意思是你可以使用{做一个xml文件{1}}您想要的高度作为第4和第5个元素之间的空间,并将可见性设置为已经消失并将其置于所有适配器元素之上。当RelativeLayout中的位置等于4时,您可以使用getView

将该项目的可见性设置为可见

因此,您只能在第4和第5个元素之间添加此空白区域。我只是一个建议,但我认为它可以很好地运作。

答案 2 :(得分:0)

布局列表视图中的所有项目,以包括您的数据以及标题视图,可能是文本视图,甚至是像其他布局一样的Viewgroup。保持标题不可见,直到代码中的某个逻辑触发(即pos == 4)并使标题可见

相关问题