Android:无法向ListView添加标题(LinearLayout无法在AbsListView中强制转换)

时间:2014-11-07 13:14:21

标签: android listview android-inflate

我正在尝试将带有ImageView的标头添加到我的ListView中。我将ImageView放在XML布局中,在Activity中我将布局放大并将其添加到ListView标头中,但是当我运行应用程序时它会崩溃说" java.lang.ClassCastException:android.widget .LinearLayout $ LayoutParams无法强制转换为android.widget.AbsListView $ LayoutParams"

我尝试将LinearLayout更改为其他布局,但仍然收到此错误消息。有什么想法吗?

list_header_banner.xml代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/publicidadeView"
    android:layout_marginTop="15dp"
    android:layout_marginBottom="15dp"
    android:layout_marginLeft="15dp"
    android:layout_marginRight="15dp"
    android:scaleType="fitXY"
    android:clickable="true"
    />
</LinearLayout>

活动夸大代码示例

ListView list = (ListView)findViewById(R.id.lvResults);
View headerView = View.inflate(this, R.layout.list_header_banner, null);
list.addHeaderView(headerView);

try {
     ImageView publicidadeView = (ImageView) headerView.findViewById(R.id.publicidadeView);
} catch (NullPointerException e) {
}

活动布局代码示例

<ListView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/lvResults"
    android:layout_gravity="center_horizontal|top"
    android:divider="@drawable/divider"
    /> 

2 个答案:

答案 0 :(得分:0)

尝试使用当前上下文(this)来扩充布局:

View view = LayoutInflater.from(this).inflate(R.layout.list_header_banner, null);

答案 1 :(得分:0)

我刚刚尝试使用此代码段,它适用于我。

LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout headerLayout = (LinearLayout) inflater.inflate(R.layout.list_header_banner, null);
listView.addHeaderView(headerLayout);