2014-10-03 5 views
0

나는 어댑터가 있으며 각 gridView 항목의 배경을 설정하고 패턴을 설정하는 방법을 알고 싶습니다. 나는 세 가지 배경을 가지고 있는데 첫 번째 항목을 bg1, bg2를 두 번째, bg3을 세 번째, bg1을 네 번째, bg2를 다섯 번째, bg3을 여섯 번째로 설정하려고합니다.모든 gridView 항목의 배경을 설정 하시겠습니까?

내 생각 엔이 작업은 getView()에서 수행되지만, 몇 가지 지침이 필요합니다. 여기까지 내가 지금까지 가지고있는 것이있다.

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

가 그럼 그냥 위치를 사용

@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

그런 다음 adappter에하는 TypedArray에 대한 참조를 유지

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

처럼 values.xml에 드로어 블의 배열을 만들 수 있습니다 배열의 어느 요소에 해당하는지 계산하려면 다음과 같이하십시오.

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

흥미 롭습니다. 나는 이것을 시도 할 것이다. 고맙습니다. +1에 대한 답변을 – portfoliobuilder

+0

왜 downvote 물어 봐도 될까요? – portfoliobuilder

+0

아무 생각이든, 내 것이 아니었지만 내 균형을 이루기 위해 +1했습니다. – Logain