我正在尝试在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的正确方法。 提前谢谢。
答案 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);