android - 将页脚添加到 ListView 后崩溃

标签 android listview layout-inflater

我正在尝试向 ListView 添加页脚,但应用程序在这行代码之后崩溃:getListView().addView(footerView);。我是 android 新手,这是我第一次使用 ListView

如果可能的话,我需要对 inflate 方法进行简短的解释。

谢谢!

  ToDoListAdapter mAdapter;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            // Create a new TodoListAdapter for this ListActivity's ListView
            mAdapter = new ToDoListAdapter(getApplicationContext());

            // Put divider between ToDoItems and FooterView
            getListView().setFooterDividersEnabled(true);

            //TODO - Inflate footerView for footer_view.xml file
            TextView footerView = (TextView) getLayoutInflater().inflate(R.layout.footer_view, null);

            //TODO - Add footerView to ListView
            getListView().addView(footerView);

            footerView.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {

                    log("Entered footerView.OnClickListener.onClick()");

                    //TODO - Attach Listener to FooterView. Implement onClick().
                    Intent startNewActivity = new Intent(null, AddToDoActivity.class);
                    startActivityForResult(startNewActivity, ADD_TODO_ITEM_REQUEST);

                }
            });

            //TODO - Attach the adapter to this ListActivity's ListView
            setListAdapter(mAdapter);

        }

日志:

02-19 13:53:39.358: D/dalvikvm(1451): GC_FOR_ALLOC freed 68K, 6% free 3090K/3276K, paused 19ms, total 31ms
02-19 13:53:39.366: I/dalvikvm-heap(1451): Grow heap (frag case) to 4.196MB for 1127532-byte allocation
02-19 13:53:39.374: D/dalvikvm(1451): GC_FOR_ALLOC freed 2K, 5% free 4189K/4380K, paused 8ms, total 8ms
02-19 13:53:39.402: D/AndroidRuntime(1451): Shutting down VM
02-19 13:53:39.402: W/dalvikvm(1451): threadid=1: thread exiting with uncaught exception (group=0xa4d4db20)
02-19 13:53:39.414: E/AndroidRuntime(1451): FATAL EXCEPTION: main
02-19 13:53:39.414: E/AndroidRuntime(1451): Process: course.labs.todomanager, PID: 1451
02-19 13:53:39.414: E/AndroidRuntime(1451): java.lang.RuntimeException: Unable to start activity ComponentInfo{course.labs.todomanager/course.labs.todomanager.ToDoManagerActivity}: java.lang.UnsupportedOperationException: addView(View) is not supported in AdapterView
02-19 13:53:39.414: E/AndroidRuntime(1451):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
02-19 13:53:39.414: E/AndroidRuntime(1451):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
02-19 13:53:39.414: E/AndroidRuntime(1451):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
02-19 13:53:39.414: E/AndroidRuntime(1451):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
02-19 13:53:39.414: E/AndroidRuntime(1451):     at android.os.Handler.dispatchMessage(Handler.java:102)
02-19 13:53:39.414: E/AndroidRuntime(1451):     at android.os.Looper.loop(Looper.java:136)
02-19 13:53:39.414: E/AndroidRuntime(1451):     at android.app.ActivityThread.main(ActivityThread.java:5017)
02-19 13:53:39.414: E/AndroidRuntime(1451):     at java.lang.reflect.Method.invokeNative(Native Method)
02-19 13:53:39.414: E/AndroidRuntime(1451):     at java.lang.reflect.Method.invoke(Method.java:515)
02-19 13:53:39.414: E/AndroidRuntime(1451):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
02-19 13:53:39.414: E/AndroidRuntime(1451):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
02-19 13:53:39.414: E/AndroidRuntime(1451):     at dalvik.system.NativeStart.main(Native Method)
02-19 13:53:39.414: E/AndroidRuntime(1451): Caused by: java.lang.UnsupportedOperationException: addView(View) is not supported in AdapterView
02-19 13:53:39.414: E/AndroidRuntime(1451):     at android.widget.AdapterView.addView(AdapterView.java:452)
02-19 13:53:39.414: E/AndroidRuntime(1451):     at course.labs.todomanager.ToDoManagerActivity.onCreate(ToDoManagerActivity.java:56)
02-19 13:53:39.414: E/AndroidRuntime(1451):     at android.app.Activity.performCreate(Activity.java:5231)
02-19 13:53:39.414: E/AndroidRuntime(1451):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
02-19 13:53:39.414: E/AndroidRuntime(1451):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
02-19 13:53:39.414: E/AndroidRuntime(1451):     ... 11 more

编辑:

谢谢,解决了这个问题,但现在我似乎在点击监听器的某个地方出现了问题。

日志:

02-19 14:19:02.346: I/Lab-UserInterface(1731): Entered footerView.OnClickListener.onClick()
02-19 14:19:02.346: D/AndroidRuntime(1731): Shutting down VM
02-19 14:19:02.346: W/dalvikvm(1731): threadid=1: thread exiting with uncaught exception (group=0xa4d4db20)
02-19 14:19:02.350: E/AndroidRuntime(1731): FATAL EXCEPTION: main
02-19 14:19:02.350: E/AndroidRuntime(1731): Process: course.labs.todomanager, PID: 1731
02-19 14:19:02.350: E/AndroidRuntime(1731): java.lang.NullPointerException
02-19 14:19:02.350: E/AndroidRuntime(1731):     at android.content.ComponentName.<init>(ComponentName.java:77)
02-19 14:19:02.350: E/AndroidRuntime(1731):     at android.content.Intent.<init>(Intent.java:3813)
02-19 14:19:02.350: E/AndroidRuntime(1731):     at course.labs.todomanager.ToDoManagerActivity$1.onClick(ToDoManagerActivity.java:65)
02-19 14:19:02.350: E/AndroidRuntime(1731):     at android.view.View.performClick(View.java:4438)
02-19 14:19:02.350: E/AndroidRuntime(1731):     at android.view.View$PerformClick.run(View.java:18422)
02-19 14:19:02.350: E/AndroidRuntime(1731):     at android.os.Handler.handleCallback(Handler.java:733)
02-19 14:19:02.350: E/AndroidRuntime(1731):     at android.os.Handler.dispatchMessage(Handler.java:95)
02-19 14:19:02.350: E/AndroidRuntime(1731):     at android.os.Looper.loop(Looper.java:136)
02-19 14:19:02.350: E/AndroidRuntime(1731):     at android.app.ActivityThread.main(ActivityThread.java:5017)
02-19 14:19:02.350: E/AndroidRuntime(1731):     at java.lang.reflect.Method.invokeNative(Native Method)
02-19 14:19:02.350: E/AndroidRuntime(1731):     at java.lang.reflect.Method.invoke(Method.java:515)
02-19 14:19:02.350: E/AndroidRuntime(1731):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
02-19 14:19:02.350: E/AndroidRuntime(1731):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
02-19 14:19:02.350: E/AndroidRuntime(1731):     at dalvik.system.NativeStart.main(Native Method)

最佳答案

  1. 改变

    getListView().addView(footerView);
    

    getListView().addFooterView(footerView);
    
  2. inflate 函数说明:

    LayoutInflater().inflate() 只是将布局 xml 转换为实际的 View 结构。

  3. 您的第二期:

    查看您的点击监听器:

    Intent startNewActivity = new Intent(null, AddToDoActivity.class);
    

    您不能以 null 作为上下文(第一个参数)启动 Intent

    更改为:

    Intent startNewActivity = new Intent(ToDoManagerActivity.this, AddToDoActivity.class);
    

关于android - 将页脚添加到 ListView 后崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21883012/

相关文章:

java - 显示来自 Java 类的 Toast 通知

java - ListView复选框位于文本之上,如何填充文本并强制复选框标准颜色?

java - 当我使用 Wea​​kReference 时,无法解析 android 上的符号消息

c# - 如何将子项添加到 ListView?

android - 无法动态膨胀Fragment

android - 从 android 中的 XML 文件创建 View-Object

android - 具有自定义样式的 TextView 导致奇怪的膨胀异常

android - OnLongPress 增加时间

android - 是否可以从 Android 中的自定义 View 禁用特定 XML 属性?

Android:帮助从 ListView 创建上下文菜单