java - 从列表 Activity 中删除 ContentView

标签 java android view

我有一个简单的列表 Activity ,显示某个目录中的所有文件。当我至少选中一个时,我希望在底部的列表上方显示一个按钮,我不希望它成为列表的一部分,因为这样你就必须一直滚动到底部才能看到按钮。我显示了按钮,这很棒,但我有一个问题。添加按钮后,我无法删除它。我希望在没有检查文件时将其删除。这是我的代码

    if(size == 1) {
                Log.d("LIST", "Showing button!");

                Button button = new Button(selectFile.getApplicationContext());
                button.setId(556);
                button.setText("Click me to " + (SHRED_MODE ? "Shred!" : "Encrypt/Delete!"));
                   LayoutParams params = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
                   params.addRule(RelativeLayout.ALIGN_PARENT_TOP);
                 selectFile.addContentView(button, params);
            } else if (size == 0) {
                Log.d("LIST", "Removing Button!");
                View view = selectFile.findViewById(556);
                if(view == null) {
                    Log.d("List", "VIEW IS NULL");
                    return;
                }
                selectFile.getListView().removeView(view);
            }

我没有看到类似removeContentView的东西,当我使用removeView时,我得到了这个异常

06-12 13:38:33.371: ERROR/AndroidRuntime(13203): java.lang.UnsupportedOperationException: removeView(View) is not supported in AdapterView
06-12 13:38:33.371: ERROR/AndroidRuntime(13203):     at android.widget.AdapterView.removeView(AdapterView.java:489)
06-12 13:38:33.371: ERROR/AndroidRuntime(13203):     at austin.paid.productions.SelectFile$EfficientAdapter$1.onCheckedChanged(SelectFile.java:134)
06-12 13:38:33.371: ERROR/AndroidRuntime(13203):     at android.widget.CompoundButton.setChecked(CompoundButton.java:124)
06-12 13:38:33.371: ERROR/AndroidRuntime(13203):     at android.widget.CompoundButton.toggle(CompoundButton.java:86)
06-12 13:38:33.371: ERROR/AndroidRuntime(13203):     at android.widget.CompoundButton.performClick(CompoundButton.java:98)
06-12 13:38:33.371: ERROR/AndroidRuntime(13203):     at android.view.View$PerformClick.run(View.java:8816)
06-12 13:38:33.371: ERROR/AndroidRuntime(13203):     at android.os.Handler.handleCallback(Handler.java:587)
06-12 13:38:33.371: ERROR/AndroidRuntime(13203):     at android.os.Handler.dispatchMessage(Handler.java:92)
06-12 13:38:33.371: ERROR/AndroidRuntime(13203):     at android.os.Looper.loop(Looper.java:123)
06-12 13:38:33.371: ERROR/AndroidRuntime(13203):     at android.app.ActivityThread.main(ActivityThread.java:4627)
06-12 13:38:33.371: ERROR/AndroidRuntime(13203):     at java.lang.reflect.Method.invokeNative(Native Method)
06-12 13:38:33.371: ERROR/AndroidRuntime(13203):     at java.lang.reflect.Method.invoke(Method.java:521)
06-12 13:38:33.371: ERROR/AndroidRuntime(13203):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
06-12 13:38:33.371: ERROR/AndroidRuntime(13203):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
06-12 13:38:33.371: ERROR/AndroidRuntime(13203):     at dalvik.system.NativeStart.main(Native Method)

有什么想法吗?

最佳答案

您不仅尝试通过 removeView()AdapterView 中删除某些内容(正如堆栈跟踪所示,这是不允许的),但事实并非如此其中 View 是您要删除的内容。

您通过以下方式添加了View:

selectFile.addContentView(button, params);

我认为 selectFile 是一个 Activity 实例,因为它是响应 addContentView() 的最有可能的候选者。

Activity 不是 ListViewselectFile 不是 selectFile.getListView()。您无法通过尝试从非 selectFile 的内容中删除添加到 selectFile 的子项来删除该子项。

而且,据我所知,无论如何,您都无法删除通过 addContentView() 添加的内容。

所以,请遵循@MisterSquonk的建议,并在布局底部有一个固定按钮。

此外,请勿调用 getApplicationContext(),除非您特别需要 Application 对象。此处不需要 Application 对象。事实上,对于 GUI 工作,您几乎不需要 Application 对象。请将 Activity 传递给 Button 构造函数。

关于java - 从列表 Activity 中删除 ContentView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6323842/

相关文章:

java - 添加叠加的 JLabel

java - 当用户在 JComboBox 中选择一个项目时,如何创建一个监听器

java - Java JVM 是否执行任何特化或部分评估类型优化?

android - 尝试添加帐户时出现 SecurityException

ios - 移动位于键盘下方的内容

jquery - 如何在当前 View 内渲染另一个页面( Controller 操作+ View )

java - Firebase 数据库异常无法将 long 转换为 String

java - 将 Android SDK 更新到最新版本和 ADT 19

java - 跟踪在另一个 Android 应用中花费的时间

java - 单击按钮后在弹出窗口中显示图像 - Android/Java