Android 实现弹出菜单列表视图
我想在listview适配器中实现popupmenu 我在Lisview适配器中实现了3点ImageView,我想在主片段中创建菜单 任何想法请解释一下你是如何做到的 简而言之 1) 您需要创建popup_menu.xmlAndroid 实现弹出菜单列表视图,android,listview,Android,Listview,我想在listview适配器中实现popupmenu 我在Lisview适配器中实现了3点ImageView,我想在主片段中创建菜单 任何想法请解释一下你是如何做到的 简而言之 1) 您需要创建popup_menu.xml <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item
<?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>
您必须在适配器中实现代码 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();
}
});
}
导入android.widget.PopupMenu;
私有静态类视图持有者{
私有图像查看弹出菜单;
}
公共类适配器扩展ArrayAdapter实现PopupMenu.OnMenuItemClickListener{
私人持票人;
@凌驾
公共布尔onMenuItemClick(菜单项){
开关(item.getItemId()){
案例R.id.IDItem菜单:
Toast.makeText(getContext(),“项菜单”,Toast.LENGTH_SHORT.show();
返回true;
}
返回false;
}
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
if(convertView==null){
convertView=LayoutInflater.from(this.getContext()).flate(R.layout.item_status,parent,false);
viewHolder=新的viewHolder();
viewHolder.popMenu=convertView.findViewById(R.id.popMenuImage);
convertView.setTag(viewHolder);
}
最终YourClass YourClass=getItem(位置);
if(yourClass!=null){
viewHolder.popMenu.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
PopupMenu PopupMenu=新建PopupMenu(getContext(),视图);
setOnMenuItemClickListener(Adapter.this);
弹出菜单。充气(右菜单。弹出菜单);
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>
<?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>