ClassCastException异常:android.widget.LinearLayout $的LayoutParams [英] ClassCastException: android.widget.LinearLayout$LayoutParams
问题描述
所以,我执行的FinderActivity.class适配器时出现此错误。
公共类FinderActivity扩展ListActivity
{
私人列表<字符串> itemsearchoptions = Arrays.asList(
新的String []
{
搜索服务中心,搜索的展示厅,
区域监视,最近OAC办公室
});
@覆盖
保护无效的onCreate(包savedInstanceState)
{
super.onCreate(savedInstanceState);
的setContentView(R.layout.finder);
getListView()setAdapter(新FinderListAdapter(这一点,this.itemsearchoptions));错误//原因
}
下面是我的FinderAdapterclass:
公共类FinderListAdapter扩展了BaseAdapter
{
上下文语境;
LayoutInflater充气;
私人INT []图标=
{
R.drawable.icon_service_center,
R.drawable.icon_car_showroom,
R.drawable.icon_radar,
R.drawable.icon_office
};
私人列表<字符串>选项= NULL;
公共FinderListAdapter(上下文paramContext,列表和LT;字符串> paramList)
{
this.context = paramContext;
this.options = paramList;
this.inflater = LayoutInflater.from(paramContext);
}
@覆盖
公众诠释getCount将()
{
返回this.options.size();
}
@覆盖
公共对象的getItem(INT paramInt)
{
返回this.options.get(paramInt);
}
@覆盖
众长getItemId(INT paramInt)
{
返回paramInt;
}
@覆盖
公共查看getView(INT paramInt,查看paramView,ViewGroup中paramViewGroup)
{
字符串str =(字符串)this.options.get(paramInt);
如果(paramView == NULL)
{
}
其他
{
返回paramView;
}
返回paramViewGroup;
}
公共布尔的isEmpty()
{
返回(this.options == NULL)||(this.options.size()== 0);
}
私有静态类ViewHolder
{
ImageView的finderIcon;
TextView的finderText;
}
}
我用的LinearLayout项目列表
在我看了一下这个错误的几种类似的问题,但还没有完全理解这个概念。因此,任何帮助将AP preciated。谢谢
编辑:对不起,忘了堆栈跟踪
07-08 15:31:42.380:E / AndroidRuntime(4550):致命异常:主要
07-08 15:31:42.380:E / AndroidRuntime(4550):java.lang.ClassCastException:android.widget.LinearLayout $的LayoutParams不能转换为android.widget.AbsListView $的LayoutParams
07-08 15:31:42.380:E / AndroidRuntime(4550):在android.widget.ListView.measureScrapChild(ListView.java:1166)
07-08 15:31:42.380:E / AndroidRuntime(4550):在android.widget.ListView.measureHeightOfChildren(ListView.java:1248)
07-08 15:31:42.380:E / AndroidRuntime(4550):在android.widget.ListView.onMeasure(ListView.java:1158)
07-08 15:31:42.380:E / AndroidRuntime(4550):在android.view.View.measure(View.java:15525)
07-08 15:31:42.380:E / AndroidRuntime(4550):在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
07-08 15:31:42.380:E / AndroidRuntime(4550):在android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
07-08 15:31:42.380:E / AndroidRuntime(4550):在android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
07-08 15:31:42.380:E / AndroidRuntime(4550):在android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
07-08 15:31:42.380:E / AndroidRuntime(4550):在android.view.View.measure(View.java:15525)
07-08 15:31:42.380:E / AndroidRuntime(4550):在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
07-08 15:31:42.380:E / AndroidRuntime(4550):在android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
07-08 15:31:42.380:E / AndroidRuntime(4550):在android.view.View.measure(View.java:15525)
07-08 15:31:42.380:E / AndroidRuntime(4550):在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
使用 android.widget.AbsListView.LayoutParams
而不是 android.widget .LinearLayout.LayoutParams
在你的进口。
一个ClassCastException堆栈跟踪是pretty的描述...
So i get this error when executing an adapter in FinderActivity.class.
public class FinderActivity extends ListActivity
{
private List<String> itemsearchoptions = Arrays.asList(
new String[]
{
"Search Service Center","Search Showroom",
"Area Surveillance", "Nearest OAC Offices"
});
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.finder);
getListView().setAdapter(new FinderListAdapter(this, this.itemsearchoptions));//cause of error
}
Here is My FinderAdapterclass:
public class FinderListAdapter extends BaseAdapter
{
Context context;
LayoutInflater inflater;
private int[]icons =
{
R.drawable.icon_service_center,
R.drawable.icon_car_showroom,
R.drawable.icon_radar,
R.drawable.icon_office
};
private List<String>options = null;
public FinderListAdapter(Context paramContext, List<String>paramList)
{
this.context = paramContext;
this.options = paramList;
this.inflater = LayoutInflater.from(paramContext);
}
@Override
public int getCount()
{
return this.options.size();
}
@Override
public Object getItem(int paramInt)
{
return this.options.get(paramInt);
}
@Override
public long getItemId(int paramInt)
{
return paramInt;
}
@Override
public View getView(int paramInt, View paramView, ViewGroup paramViewGroup)
{
String str = (String)this.options.get(paramInt);
if(paramView == null)
{
}
else
{
return paramView;
}
return paramViewGroup;
}
public boolean isEmpty()
{
return (this.options == null)||(this.options.size()==0);
}
private static class ViewHolder
{
ImageView finderIcon;
TextView finderText;
}
}
I used LinearLayout on the item list
I have read several similar problems about this error, but yet to fully understand the concept. So any help will be appreciated. thanks
edited : sorry forgot the stacktrace
07-08 15:31:42.380: E/AndroidRuntime(4550): FATAL EXCEPTION: main
07-08 15:31:42.380: E/AndroidRuntime(4550): java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams
07-08 15:31:42.380: E/AndroidRuntime(4550): at android.widget.ListView.measureScrapChild(ListView.java:1166)
07-08 15:31:42.380: E/AndroidRuntime(4550): at android.widget.ListView.measureHeightOfChildren(ListView.java:1248)
07-08 15:31:42.380: E/AndroidRuntime(4550): at android.widget.ListView.onMeasure(ListView.java:1158)
07-08 15:31:42.380: E/AndroidRuntime(4550): at android.view.View.measure(View.java:15525)
07-08 15:31:42.380: E/AndroidRuntime(4550): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
07-08 15:31:42.380: E/AndroidRuntime(4550): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
07-08 15:31:42.380: E/AndroidRuntime(4550): at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
07-08 15:31:42.380: E/AndroidRuntime(4550): at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
07-08 15:31:42.380: E/AndroidRuntime(4550): at android.view.View.measure(View.java:15525)
07-08 15:31:42.380: E/AndroidRuntime(4550): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
07-08 15:31:42.380: E/AndroidRuntime(4550): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
07-08 15:31:42.380: E/AndroidRuntime(4550): at android.view.View.measure(View.java:15525)
07-08 15:31:42.380: E/AndroidRuntime(4550): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
Use android.widget.AbsListView.LayoutParams
instead of the android.widget.LinearLayout.LayoutParams
in your imports.
A ClassCastException stacktrace is pretty descriptive...
这篇关于ClassCastException异常:android.widget.LinearLayout $的LayoutParams的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!