我有一个适配器,我想知道如何设置每个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;
}
答案 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)
)