在ListView中加载多个布局
我正在尝试在列表视图中显示多个布局。我在列表视图中只有三个项目,每行都有不同的布局。这是我正在使用的代码
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;
}
}
,但是在运行时崩溃并给出错误
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)
有人可以帮忙吗? 我怎样才能在安卓中做到这一点? 谢谢
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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我发现了这个问题。情况 2 中的返回类型出现错误。我返回的是 ImageButton,而不是视图
这是正确的代码
I found the issue. Its an error with the return type in case 2. Instead of view I was returning a ImageButton
Here is the correct code
我认为你的错误是你试图在列表中放入超过 3 个项目,并且当你的列表大于该列表时,它会向你显示一个错误......尝试这样做:
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: