仅将填充应用于适配器中的第一个视图

时间:2014-10-07 16:30:47

标签: android android-adapter

我正在尝试向数组适配器中的单个视图添加一些填充。

在getView()方法中,我可以说:

if(position==0){
   rowView.setPadding(60,0,0,0);

}

但该位置始终无误,因为convertView已被回收。

有没有人试图做这样的事情?

1 个答案:

答案 0 :(得分:1)

第一项的位置始终为0。但是,您需要将其他项目的填充设置恢复正​​常:

if (position == 0) {
    rowView.setPadding(60, 0, 0, 0);
} else {
    rowView.setPadding(pad, pad, pad, pad);
}

或者,使用多种视图类型为第一项返回不同的布局:

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

@Override 
public int getItemViewType(int position) {
    return (position == 0) ? 0 : 1;
}

@Override
public View getView(View convertView, ViewGroup parent, int position) {
    if (convertView == null) {
        if (getItemViewType(position) == 0) {
            // Inflate padded layout
        } else {
            // Inflate standard layout
        }
    }
}