我想在listview适配器enter image description here中实现popupmenu
我在Listview适配器中实现3点ImageView,我想在主片段中创建菜单
请问任何想法
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 /您需要将点图像放在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>