我试图在列表视图中的第4和第5项之间添加一些额外的空格。我有什么选择?
我尝试在适配器的getView()中执行此操作,以及手动访问第四个元素并向其添加填充。
有更好的方法吗?
答案 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)并使标题可见