android - listview.addHeaderView()添加标题头出错

查看:83
本文介绍了android - listview.addHeaderView()添加标题头出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

我在写一个布局时,在listview中添加一个标题头时出错
以下是我的代码

public Newspager(Context context,String url) {
        mInflate = View.inflate(context, R.layout.news_pager, null);
        ListView newspagerlv = (ListView) mInflate.findViewById(R.id.news_pager_lv);


        View header = View.inflate(context, R.layout.header, null);

        mAuto_roll = (AutoRolllayout) header.findViewById(R.id.auto_roll_out);
        //添加头到listview
        newspagerlv.addHeaderView(mAuto_roll);

        newspagerlv.setAdapter(mBaseAdapter);
        }

layout.news_pager布局很简单,就是一个线性布局包裹一个listview

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">
    <ListView
        android:id="@+id/news_pager_lv"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </ListView>
</LinearLayout>

R.layout.header作为头添加到listview中,以下是代码,里面的自定义控件是没有什么问题的

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="wrap_content">
    <helloas.siinax.com.lib_autorollayout.widget.AutoRolllayout
        android:layout_width="match_parent"
        android:layout_height="160dp"
        android:id="@+id/auto_roll_out"
        />
</LinearLayout>

现在就是将这个自定义控件作为头添加到listview中,就出错了,也就是
newspagerlv.addHeaderView(mAuto_roll);
往listview中添加头时出错
哪位神帮忙解决一下!

打印的logcat

 FATAL EXCEPTION: main
11-12 14:00:45.116 2958-2958/? E/AndroidRuntime: java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams
11-12 14:00:45.116 2958-2958/? E/AndroidRuntime:     at android.widget.ListView.clearRecycledState(ListView.java:515)
11-12 14:00:45.116 2958-2958/? E/AndroidRuntime:     at android.widget.ListView.resetList(ListView.java:501)
11-12 14:00:45.116 2958-2958/? E/AndroidRuntime:     at android.widget.ListView.setAdapter(ListView.java:444)
11-12 14:00:45.116 2958-2958/? E/AndroidRuntime:     at helloas.siinax.com.itcastnews.fragment.Newspager.<init>(Newspager.java:61)
11-12 14:00:45.116 2958-2958/? E/AndroidRuntime:     at helloas.siinax.com.itcastnews.fragment.Newsfragment$2.instantiateItem(Newsfragment.java:156)
11-12 14:00:45.116 2958-2958/? E/AndroidRuntime:     at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:870)
11-12 14:00:45.116 2958-2958/? E/AndroidRuntime:     at android.support.v4.view.ViewPager.populate(ViewPager.java:1020)
11-12 14:00:45.116 2958-2958/? E/AndroidRuntime:     at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:552)
11-12 14:00:45.116 2958-2958/? E/AndroidRuntime:     at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:514)
11-12 14:00:45.116 2958-2958/? E/AndroidRuntime:     at android.support.v4.view.ViewPager.dataSetChanged(ViewPager.java:946)
11-12 14:00:45.116 2958-2958/? E/AndroidRuntime:     at android.support.v4.view.ViewPager$PagerObserver.onChanged(ViewPager.java:2910)
11-12 14:00:45.116 2958-2958/? E/AndroidRuntime:     at android.database.DataSetObservable.notifyChanged(DataSetObservable.java:37)
11-12 14:00:45.116 2958-2958/? E/AndroidRuntime:     at android.support.v4.view.PagerAdapter.notifyDataSetChanged(PagerAdapter.java:276)
11-12 14:00:45.116 2958-2958/? E/AndroidRuntime:     at helloas.siinax.com.itcastnews.fragment.Newsfragment$1.onSuccess(Newsfragment.java:104)
11-12 14:00:45.116 2958-2958/? E/AndroidRuntime:     at com.lidroid.xutils.http.HttpHandler.onProgressUpdate(HttpHandler.java:218)
11-12 14:00:45.116 2958-2958/? E/AndroidRuntime:     at com.lidroid.xutils.task.PriorityAsyncTask$InternalHandler.handleMessage(PriorityAsyncTask.java:385)
11-12 14:00:45.116 2958-2958/? E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:99)
11-12 14:00:45.116 2958-2958/? E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:137)
11-12 14:00:45.116 2958-2958/? E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5041)
11-12 14:00:45.116 2958-2958/? E/AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native Method)
11-12 14:00:45.116 2958-2958/? E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:511)
11-12 14:00:45.116 2958-2958/? E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
11-12 14:00:45.116 2958-2958/? E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
11-12 14:00:45.116 2958-2958/? E/AndroidRuntime:     at dalvik.system.NativeStart.main(Native Method)


解决方案

头部view不是header吗?为什么addHeaderView反倒用了mAuto_roll?
应该是这样

newspagerlv.addHeaderView(header);

这篇关于android - listview.addHeaderView()添加标题头出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆