在listview的页脚添加xml中定义的线性布局

时间:2015-06-04 06:46:36

标签: android listview android-listview android-linearlayout

我正在尝试在listview的页脚添加xml中定义的线性布局。我尝试了下面的代码

listview.addFooter(findViewById(R.id.my_linearlayout))

但它正在抛出错误

java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.ViewGroup$LayoutParams android.view.View.getLayoutParams()' on a null object reference

如果我只是删除了addFooter代码,那么acitvity运行顺畅。请指出一个问题是什么,或者是否是动态地在listview的页脚添加linearlayout的正确方法。 提前谢谢。

3 个答案:

答案 0 :(得分:2)

查看footerView = getLayoutInflater()。inflate(R.layout.my_linearlayout,null); listview.addFooterView(footerView);

您应该将my_linearlayout添加到/ res / layout /文件夹。

答案 1 :(得分:0)

你必须这样做

View footerView = ((LayoutInflater) ActivityContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.list_footer_layout, null, false);
ListView.addFooterView(footerView);

这里是list_footer_layout布局文件夹中xml文件的名称。

像这样的页脚布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingTop="7dip"
    android:paddingBottom="7dip"
    android:orientation="horizontal"
    android:gravity="center">

    <LinearLayout 
        android:id="@+id/list_footer_layout" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:gravity="center"
        android:layout_gravity="center">

    <TextView 
        android:text="@string/footer_text_1" 
        android:id="@+id/footer_1" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:textSize="14dip" 
        android:textStyle="bold" 
        android:layout_marginRight="5dip" />
    </LinearLayout>
</LinearLayout> 

活动类可以是

public class MyListActivty extends ListActivity {
    private Context context = null;
    private ListView list = null;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        list = (ListView)findViewById(android.R.id.list);

        //code to set adapter to populate list
        View footerView =  ((LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.list_footer_layout, null, false);
        list.addFooterView(footerView);
    }
}

答案 2 :(得分:0)

你必须这样做:

LinearLayout linearLayout = LayoutInflater.from(context).inflate(R.layout.your_layout, listview, false);
listview.addFooter(linearLayout);