I am trying to display multiple layout in my listview. I am having only three items in list view and each row is having a different layout. Here is the code I am using for that
private class CompetitionDetailsAdapter extends ArrayAdapter<Article> {
public CompetitionDetailsAdapter(Context context, int textViewResourceId
) {
super(context, 0);
// TODO Auto-generated constructor stub
}
@Override
public int getCount() {
return 3;
}
@Override
public int getItemViewType(int position) {
return position;
}
@Override
public int getViewTypeCount() {
return 3;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
// TODO Auto-generated method stub
//return super.getView(position, convertView, parent);
LayoutInflater inflater=getLayoutInflater();
int type = getItemViewType(position);
switch(type)
{
case 0:
{
View headerCell = inflater.inflate(R.layout.rsscellheader, null);
ImageView imageView = (ImageView)headerCell.findViewById(R.id.headerCellImage);
TextView title = (TextView)headerCell.findViewById(R.id.txt_HeaderCellTitle);
TextView date = (TextView)headerCell.findViewById(R.id.txt_HeaderCellDate);
Activity activity = (Activity) getContext();
imageLoader.DisplayImage(appDeleg.getSelectedCompetition().getImage(), activity, imageView);
return headerCell;
//break;
}
case 1:
{
View webViewCell = inflater.inflate(R.layout.rsswebviewcell, null);
WebView webView = (WebView)webViewCell.findViewById(R.id.webView);
webView.loadData(appDeleg.getSelectedCompetition().getDescription(), "text/html", "utf-8");
return webViewCell;
}
case 2:
{
View buttonCell = inflater.inflate(R.layout.rssbuttoncell, null);
ImageButton btnWebView = (ImageButton)buttonCell.findViewById(R.id.btn_WebView);
return btnWebView;
}
}
return convertView;
}
}
But while running its crashing and giving error
10-25 14:00:14.298: ERROR/AndroidRuntime(3102): java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams
10-25 14:00:14.298: ERROR/AndroidRuntime(3102): at android.widget.ListView.measureScrapChild(ListView.java:1117)
10-25 14:00:14.298: ERROR/AndroidRuntime(3102): at android.widget.ListView.measureHeightOfChildren(ListView.java:1200)
10-25 14:00:14.298: ERROR/AndroidRuntime(3102): at android.widget.ListView.onMeasure(ListView.java:1109)
10-25 14:00:14.298: ERROR/AndroidRuntime(3102): at android.view.View.measure(View.java:8172)
Could someone help please? How can I do this in android? Thanks
I think that your mistake is that you are trying to put more than a 3 item in a list, and when your list is bigger than that it's showing you a mistake... try with this: