设置每个gridView项目的背景?

时间:2014-10-03 23:32:19

标签: android android-gridview baseadapter

我有一个适配器,我想知道如何设置每个gridView项目的背景并设置一个模式?我有三个背景,我想将第一个项目设置为bg1,第二个设置为bg2,第三个设置为bg3,第四个设置为bg1,第五个设置为bg2,第六个设置为bg3等等。

我的猜测是这是在getView()下完成的,但我需要一些指导。这是我到目前为止所拥有的。

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

    View view = convertView;
    ViewHolder holder;
    if (view == null) {
        LayoutInflater inflater = (LayoutInflater) mContext
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = inflater.inflate(R.layout.item_grid, null);
        holder = new ViewHolder();
        holder.llBackground = (LinearLayout) view.findViewById(R.id.llBackground);
        view.setTag(holder);
    } else {
        holder = (ViewHolder) view.getTag();
    }

    Picasso.with(mContext).load(mArrayList.get(position).getWebsite()).placeholder(R.drawable.old_graphic).centerCrop().resize(100, 100).into(holder.ivItem);
    holder.llBackground.setBackgroundResource(R.drawable.bg2);

    return view;
}

1 个答案:

答案 0 :(得分:2)

您可以在values.xml上创建一个drawable数组,如

<string-array name="grid_view_backgrounds">
    <item>@drawable/bg1</item>
    <item>@drawable/bg2</item>
    <item>@drawable/bg3</item>
</string-array>

然后在adappter上保留对TypedArray的引用:

final TypedArray backgrounds = context.getResources().obtainTypedArray(R.array.grid_view_backgrounds);

然后只需使用元素的位置来计算数组的哪个元素对应,例如:

holder.llBackground.setBackgroundResource(
    backgrounds.getResourceId(position % backgrounds.length(), 0)
)