두 가지 레이아웃 유형 (하나는 이미지가 있고 다른 하나는 이미지가 없음)이있는 ListView가 있습니다. 나는 this과 같은 것을하려고 노력한다. 나는 BaseAdapter의의 getView를 오버라이드 (override) :다른 항목 레이아웃이있는 ListView에 대한 ViewHolders
public View getView(int position, View convertView, ViewGroup parent) {
Map<String, String> item = mData.get(position);
if(item.get("image_location").equals("") == true){
ViewHolderWithoutImage holder = new ViewHolderWithoutImage();
if(convertView == null){
convertView = mInflater.inflate(R.layout.row_without_image, null);
holder.title = (TextView)convertView.findViewById(R.id.title);
holder.firstParagraph = (TextView)convertView.findViewById(R.id.first_paragraph);
convertView.setTag(holder);
}else{
holder = (ViewHolderWithoutImage)convertView.getTag();
}
holder.title.setText(mData.get(position).get("title").toString());
holder.firstParagraph.setText(item.get("first_paragraph").toString());
}else{
ViewHolderWithImage holder = new ViewHolderWithImage();
Bitmap bm = null;
if(convertView == null){
convertView = mInflater.inflate(R.layout.row_with_image, null);
holder.title = (TextView)convertView.findViewById(R.id.title_image);
holder.firstParagraph = (TextView)convertView.findViewById(R.id.first_paragraph_image);
holder.image = (ImageView)convertView.findViewById(R.id.image);
convertView.setTag(holder);
}else{
holder = (ViewHolderWithImage)convertView.getTag();
}
holder.title.setText(mData.get(position).get("title").toString());
holder.firstParagraph.setText(item.get("first_paragraph").toString());
String location = imageBaseUrl + item.get("image_location");
bm = downloadImage(location);
holder.image.setImageBitmap(bm);
}
return convertView;
}
내 ViewHolders 클래스 :
static class ViewHolderWithImage {
TextView title;
TextView firstParagraph;
ImageView image;
}
static class ViewHolderWithoutImage {
TextView title;
TextView firstParagraph;
}
그것은 두 번째 부분없이 작동하지만, 충돌이 때 item.get("image_location").equals("") != true
java.lang.reflect.InvocationTargetException
을 가진 부분에
holder = (ViewHolderWithImage)convertView.getTag();
에 갈 때 . 어떤 아이디어로 어떻게 해결할 수 있습니까?
자세한 정보를 얻으려면 getCause() 또는 getTargetException() (http://download.oracle.com/javase/1.4.2/docs/api/java/lang/reflect/InvocationTargetException.html 참조)을 사용해보십시오. 예외에 관한. – MByD