현재 그리드뷰 안에 3개의 View(ImageView, LinearLayout, TextView)가 들어가고
LinearLayout에는 Button을 동적으로 생성해주려고 합니다(넘겨주는 ArrayList 안에 ArrayList를 넣은 구조). 코드를 돌려보면 Button의 position이 왔다갔다 하는데...(LinearLayout이 포지션을 잘못 인식하는 듯 합니다...)
왜그런지 잘모르겠네요...ㅠㅠ
Adapter의 getView 메소드입니다.
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView == null){
convertView = mInflater.inflate(R.layout.row_product_gridview, null);
holder = new ViewHolder();
holder.image = (ImageView) convertView.findViewById(R.id.row_product_iv_item);
holder.option = (LinearLayout) convertView.findViewById(R.id.row_product_ll_option);
holder.desc = (TextView) convertView.findViewById(R.id.row_product_tv_test);
for(int i = 0; i < mList.get(position).getmItemOption().size(); i++) {
Button b = new Button(holder.option.getContext());
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
b.setLayoutParams(params);
b.setGravity(Gravity.CENTER_HORIZONTAL|Gravity.CENTER_VERTICAL);
b.setTextSize(8);
b.setText(mList.get(position).getmItemOption().get(i).toString());
holder.option.addView(b);
}
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.image.setBackgroundResource(R.drawable.ic_coupon);
holder.desc.setText(mList.get(position).getmDesc().toString());
return convertView;
}
static class ViewHolder {
ImageView image;
LinearLayout option;
TextView desc;
}
다음은 레이아웃입니다.(row)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/row_product_iv_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<LinearLayout
android:id="@+id/row_product_ll_option"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
</LinearLayout>
<TextView
android:id="@+id/row_product_tv_test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:textSize="24sp"/>
</LinearLayout>