android - 适配器 getView() 内的 PopupMenu 不起作用

标签 android listview adapter popupmenu

我正在使用自定义适配器并在 getView() 方法上添加以下代码:

final ImageView popupMenu = (ImageView) v.findViewById(R.id.popupMenu);
    popupMenu.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
            popupMenu.setImageResource(R.drawable.ic_popup_menu_selected);
            PopupMenu popup = new PopupMenu(context, view);
            popup.getMenuInflater().inflate(R.menu.popup, popup.getMenu());
            popup.setOnDismissListener(new PopupMenu.OnDismissListener() {
                @Override
                public void onDismiss(PopupMenu pm) {
                    popupMenu.setImageResource(R.drawable.ic_popup_menu);
                }
            });
            popup.show();
        }
});

但我收到此错误: java.lang.RuntimeException:无法解析索引 6 处的属性

相同的代码适用于ListItemClick(),但在那里没有意义,因为需要单击一次才能设置,然后再次单击才能触发 PopupMenu。

编辑:Logcat

11-02 17:58:51.276    1996-1996/com.android.example E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.android.example, PID: 1996
java.lang.RuntimeException: Failed to resolve attribute at index 6
        at android.content.res.TypedArray.getLayoutDimension(TypedArray.java:603)
        at android.view.ViewGroup$LayoutParams.setBaseAttributes(ViewGroup.java:6423)
        at android.view.ViewGroup$MarginLayoutParams.<init>(ViewGroup.java:6591)
        at android.widget.FrameLayout$LayoutParams.<init>(FrameLayout.java:735)
        at android.widget.FrameLayout.generateLayoutParams(FrameLayout.java:679)
        at android.widget.FrameLayout.generateLayoutParams(FrameLayout.java:62)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
        at android.support.v7.internal.view.menu.MenuPopupHelper$MenuAdapter.getView(MenuPopupHelper.java:363)
        at android.support.v7.internal.view.menu.MenuPopupHelper.measureContentWidth(MenuPopupHelper.java:212)
        at android.support.v7.internal.view.menu.MenuPopupHelper.tryShow(MenuPopupHelper.java:146)
        at android.support.v7.internal.view.menu.MenuPopupHelper.show(MenuPopupHelper.java:118)
        at android.support.v7.widget.PopupMenu.show(PopupMenu.java:168)
        at com.android.example.GetAdapter$listAdapter$1.onClick(GetAdapter.java:81)
        at android.view.View.performClick(View.java:4756)
        at android.view.View$PerformClick.run(View.java:19749)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5221)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

最佳答案

通过以下导入,我总是遇到错误:

import android.support.v7.widget.PopupMenu;

它可以与以下导入一起正常工作:

import android.widget.PopupMenu;

完整答案:stackoverflow.com/a/27826670/4548500

关于android - 适配器 getView() 内的 PopupMenu 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26702540/

相关文章:

android - 你如何让 View 填充它可用的空间?

android - 编辑项目后使用 ArrayAdapter 刷新 ListView

c# - 如何防止 ListView 扩展窗口维度?

用于测试网络适配器是否受防火墙保护的 C# API

java - GetView 对比自定义 CursorAdapter 中的 BindView?

android - 重新加载 Activity 后 ProgressBar 看起来很奇怪

android - 获取网络类型

android - 尝试在 android studio 中添加库时出现 compileClassPAth 错误

java - 从 ListView 获取 EditText 值是可行的...有时

android - 快速适配器位置