【问题标题】:ClassCastException: android.widget.LinearLayout$LayoutParamsClassCastException: android.widget.LinearLayout$LayoutParams
【发布时间】:2023-04-08 18:52:02
【问题描述】:

所以在 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


    }

这是我的 FinderAdapter 类:

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;
    }
}

我在项目列表上使用了LinearLayout

我已经阅读了几个关于这个错误的类似问题,但还没有完全理解这个概念。因此,我们将不胜感激任何帮助。谢谢

已编辑:抱歉忘记了堆栈跟踪

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)

【问题讨论】:

  • 也发布您的堆栈跟踪...
  • 检查你导入的类
  • 顺便说一句:对我来说,你的 getView() 毫无意义。

标签: android layout


【解决方案1】:

在您的导入中使用 android.widget.AbsListView.LayoutParams 而不是 android.widget.LinearLayout.LayoutParams

ClassCastException 堆栈跟踪非常具有描述性...

【讨论】:

【解决方案2】:

对于其他有同样问题的人。请首先修复您的 getView 方法。

试着把它变成这样。

public View getView(int i, View view, ViewGroup viewGroup) {
    LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    View root;

    if(view == null){
       root = layoutInflater.inflate(R.layout.yourLayout, null);
    } else {
       root = view;
    }

    return root;
    }

这可能会解决android.widget.LinearLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams 错误。

相信我,我正面临着这个确切的问题,但我设法以这种方式解决它。

【讨论】:

    猜你喜欢
    • 2012-07-12
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    相关资源
    最近更新 更多