public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder newsvh = null;
ViewHolder2 imagevh = null;
ViewHolder3 speekvh = null;
int type = getItem(position).getChanneltype();
if (convertView == null) {
switch (type) {
case 1:
newsvh = new ViewHolder();
convertView = LayoutInflater.from(getActivity()).inflate(
R.layout.news_item, null);
newsvh.image = (ImageView) convertView
.findViewById(R.id.image);
newsvh.title = (TextView) convertView
.findViewById(R.id.title);
newsvh.writer = (TextView) convertView
.findViewById(R.id.writer);
newsvh.pubdate = (TextView) convertView
.findViewById(R.id.pubdate);
newsvh.click = (TextView) convertView
.findViewById(R.id.click);
convertView.setTag(newsvh);
break;
case 2:
imagevh = new ViewHolder2();
convertView = LayoutInflater.from(getActivity()).inflate(
R.layout.image_item, null);
imagevh.image = (AbScaleImageView) convertView
.findViewById(R.id.image);
imagevh.title = (TextView) convertView
.findViewById(R.id.title);
imagevh.writer = (TextView) convertView
.findViewById(R.id.writer);
imagevh.pubdate = (TextView) convertView
.findViewById(R.id.pubdate);
imagevh.click = (TextView) convertView
.findViewById(R.id.click);
convertView.setTag(imagevh);
break;
case 3:
speekvh = new ViewHolder3();
convertView = LayoutInflater.from(getActivity()).inflate(
R.layout.speekall_item, null);
speekvh.image = (ImageView) convertView
.findViewById(R.id.image);
speekvh.title = (TextView) convertView
.findViewById(R.id.title);
speekvh.writer = (TextView) convertView
.findViewById(R.id.writer);
speekvh.pubdate = (TextView) convertView
.findViewById(R.id.pubdate);
speekvh.click = (TextView) convertView
.findViewById(R.id.click);
convertView.setTag(speekvh);
break;
default:
break;
}
} else {
switch (type) {
case 1:
newsvh = (ViewHolder) convertView.getTag();
break;
case 2:
imagevh = (ViewHolder2) convertView.getTag();//Error
break;
case 3:
speekvh = (ViewHolder3) convertView.getTag();
break;
default:
break;
}
}
switch (type) {
case 1:
newsvh.title.setText(getItem(position).getTitle());
newsvh.writer.setText(getItem(position).getWriter());
newsvh.pubdate.setText(CommonUtil.getData(getItem(position)
.getPubdate()));
newsvh.click.setText("浏览:"
+ String.valueOf(getItem(position).getClick()));
imageLoader
.DisplayImage(
AppConfig.IMAGE_ADDRESS
+ getItem(position).getLitpic(),
newsvh.image);
newsvh.image.setLayoutParams(new LinearLayout.LayoutParams(
imageWidth, (int) (imageWidth * 0.8)));
break;
case 2:
imagevh.title.setText(getItem(position).getTitle());
imagevh.writer.setText(getItem(position).getWriter());
imagevh.pubdate.setText(CommonUtil.getData(getItem(position)
.getPubdate()));
imagevh.click.setText("浏览:"
+ String.valueOf(getItem(position).getClick()));
imagevh.image.setMargin(10);
imageLoader
.DisplayImage(
AppConfig.IMAGE_ADDRESS
+ getItem(position).getLitpic(),
imagevh.image);
break;
case 3:
break;
default:
break;
}
return convertView;
}
public class ViewHolder {
public TextView title, writer, pubdate, click;
public ImageView image;
}
public class ViewHolder2 {
public TextView title, writer, pubdate, click;
public AbScaleImageView image;
}
public class ViewHolder3 {
public TextView title, writer, pubdate, click;
public ImageView image;
}
Ошибка:Android convertView.getTag() Ошибка
11-19 23:52:03.552: E/AndroidRuntime(17348): Process: com.huisifang.cms, PID: 17348
11-19 23:52:03.552: E/AndroidRuntime(17348): java.lang.ClassCastException: com.huisifang.cms.fragment.ChannelFragment$NewsAdapter$ViewHolder3 cannot be cast to com.huisifang.cms.fragment.ChannelFragment$NewsAdapter$ViewHolder2
11-19 23:52:03.552: E/AndroidRuntime(17348): at com.huisifang.cms.fragment.ChannelFragment$NewsAdapter.getView(ChannelFragment.java:511)
11-19 23:52:03.552: E/AndroidRuntime(17348): at android.widget.HeaderViewListAdapter.getView(HeaderViewListAdapter.java:220)
11-19 23:52:03.552: E/AndroidRuntime(17348): at android.widget.AbsListView.obtainView(AbsListView.java:2285)
11-19 23:52:03.552: E/AndroidRuntime(17348): at android.widget.ListView.makeAndAddView(ListView.java:1790)
11-19 23:52:03.552: E/AndroidRuntime(17348): at android.widget.ListView.fillDown(ListView.java:691)
11-19 23:52:03.552: E/AndroidRuntime(17348): at android.widget.ListView.fillGap(ListView.java:655)
11-19 23:52:03.552: E/AndroidRuntime(17348): at android.widget.AbsListView.trackMotionScroll(AbsListView.java:5424)
11-19 23:52:03.552: E/AndroidRuntime(17348): at android.widget.AbsListView.scrollIfNeeded(AbsListView.java:3374)
11-19 23:52:03.552: E/AndroidRuntime(17348): at android.widget.AbsListView.onTouchMove(AbsListView.java:3774)
11-19 23:52:03.552: E/AndroidRuntime(17348): at android.widget.AbsListView.onTouchEvent(AbsListView.java:3583)
11-19 23:52:03.552: E/AndroidRuntime(17348): at android.view.View.dispatchTouchEvent(View.java:7714)
11-19 23:52:03.552: E/AndroidRuntime(17348): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2224)
11-19 23:52:03.552: E/AndroidRuntime(17348): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
11-19 23:52:03.552: E/AndroidRuntime(17348): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2230)
Почему у вас есть 3 класса «ViewHolder»? – codeMagic
Это может показаться нерушимым, но написание нескольких строк, описывающих вашу проблему, не повредит. – Fred