【问题标题】:Set background of every gridView item?设置每个 gridView 项目的背景?
【发布时间】:2014-10-04 07:42:20
【问题描述】:

我有一个 Adapter,我想知道如何设置每个 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;
}

【问题讨论】:

    标签: android android-gridview baseadapter


    【解决方案1】:

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

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

    然后在您的适配器上保留对 TypedArray 的引用:

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

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

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

    【讨论】:

    • 有趣。我会试试这个。谢谢你。 +1 回答
    • 不知道,不是我的,但请用我的 +1 来平衡一下
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-06
    • 1970-01-01
    • 2017-07-03
    • 2019-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多