实现popupmenu listview

问题描述 投票:1回答:2

我想在listview适配器enter image description here中实现popupmenu

我在Listview适配器中实现3点ImageView,我想在主片段中创建菜单

请问任何想法

android listview
2个回答
1
投票

This tutorial解释了你如何做到这一点。

简而言之。

1)您需要创建popup_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/item_install"
        android:showAsAction="ifRoom|withText"
        android:title="Install"
        android:visible="true"/>
    <item
        android:id="@+id/item_add_wishlist"
        android:showAsAction="ifRoom|withText"
        android:title="Add to Wishlist"
        android:visible="true"/>
</menu>

2)在代码中你需要添加如下内容:

PopupMenu popupMenu = new PopupMenu(PopMenuActivity.this, view);
popupMenu.setOnMenuItemClickListener(PopMenuActivity.this);
popupMenu.inflate(R.menu.popup_menu);
popupMenu.show();

1
投票

您必须在适配器中实现您的代码

1 /您需要将点图像放在item.xml中,您要在其中定义列表视图的项目:

                    <ImageView
                    android:paddingRight="10dp"
                    android:layout_width="40dp"
                    android:layout_height="20dp"
                    android:layout_alignParentEnd="true"
                    android:layout_alignParentTop="true"
                    android:clickable="true"
                    android:id="@+id/popMenuImage"
                    android:src="@drawable/more" />

2 /在适配器中声明它,您必须实现OnMenuItemClickListener

import android.widget.PopupMenu;
    private static class ViewHolder {
            private ImageView popMenu;
        }

public class Adapter extends ArrayAdapter<YourClass> implements PopupMenu.OnMenuItemClickListener {
    private ViewHolder viewHolder;

@Override
public boolean onMenuItemClick(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.idItemMenu:
            Toast.makeText(getContext(), "item menu", Toast.LENGTH_SHORT).show();
            return true;
    }
    return false;
}


public View getView(final int position, View convertView, ViewGroup parent) {
    if (convertView == null) {
        convertView = LayoutInflater.from(this.getContext()).inflate(R.layout.item_status, parent, false);
        viewHolder = new ViewHolder();
        viewHolder.popMenu = convertView.findViewById(R.id.popMenuImage);
        convertView.setTag(viewHolder);
    }

        final YourClass yourClass = getItem(position);
        if (yourClass != null) {
           viewHolder.popMenu.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    PopupMenu popupMenu = new PopupMenu(getContext(), view);
                    popupMenu.setOnMenuItemClickListener(Adapter.this);
                    popupMenu.inflate(R.menu.popMenu);
                    popupMenu.show();
                }
            });
}

3 /在菜单文件夹中,创建popMenu.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/idItemMenu"
        android:title="Item 1" />

</menu>
© www.soinside.com 2019 - 2024. All rights reserved.