안드로이드 개발 질문/답변
(글 수 45,052)
ArrayAdapter 를 상속받아서 이미지 밑에 텍스트를 넣으려고 하는데요,,
java.lang.ClassCastException: android.widget.AbsListView$LayoutParams 가 나면서 죽습니다..
그밑에 at android.widghet.LinearLayout.measureVertical(LinearLayout.java) 라고 나오네요
레이아웃 구성에 문제가 있는걸까요 ?? (리니어레이아웃 안에 그리드뷰를 넣었습니다..)
젤 위만 보면 캐스팅 관련해서 오류가 난거 같은데. 문제가 뭘까요??
해결이 안되네요..ㅠㅠ
아래는 Adapter 클래스입니다..
public class CustomArrayAdapter extends ArrayAdapter {
private Context mContext;
private ArrayList mList;
public CustomArrayAdapter(Context context, int textViewResourceId, ArrayList list) {
super(context, textViewResourceId, list);
mContext = context;
mList = list;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.imageview, null);
}
Image image = (Image) mList.get(position);
if (image != null) {
ImageView imageView = (ImageView) convertView.findViewById(R.id.ImageView01);
TextView textView = (TextView) convertView.findViewById(R.id.TextView01);
if (imageView != null) {
imageView.setImageResource(image.getmThumbId());
imageView.setLayoutParams(new GridView.LayoutParams(50, 50));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(5, 5, 5, 5);
}
if (textView != null) {
textView.setText(image.getmThumbName());
}
}
return convertView;
}
}호출하는 메인클래스이구요
public class HomeworkTest extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ArrayList mList = new ArrayList();
Image image1 = new Image(R.drawable.lambor, "람보르기니");
Image image2 = new Image(R.drawable.ferrari, "페라리");
Image image3 = new Image(R.drawable.maserati, "마세라티");
mList.add(image1);
mList.add(image2);
mList.add(image3);
CustomArrayAdapter adapter = new CustomArrayAdapter(this, R.layout.imageview, mList);
GridView gridview = (GridView) findViewById(R.id.GridView01);
gridview.setAdapter(adapter);
}
}



그럼 이건 어떻게 설정해야 되는걸까요 ??