2014-10-03 72 views
0

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

我的猜测是这是在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; 
} 

回答

2

您可以在values.xml像

<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) 
) 
+0

有趣。我会试试这个。谢谢。 +1回答 – portfoliobuilder 2014-10-03 23:52:37

+0

我可以问为什么downvote? – portfoliobuilder 2014-10-03 23:52:59

+0

不知道,不是我的,而是拿我的+1做一些平衡 – Logain 2014-10-04 00:10:45

相关问题