Android 关于按下列表项视图时的弹出菜单

Android 关于按下列表项视图时的弹出菜单,android,Android,我需要帮助解决一个我现在找不到任何解决方案的问题。 我想要达到的目标: 我有一个自定义的ListView适配器。我想在每个列表项中添加一个弹出菜单 已付款、未付款、已交付、未交付。菜单xml: <menu xmlns:androclass="http://schemas.android.com/apk/res/android" > <item android:id="@+id/one" android:title="play

我需要帮助解决一个我现在找不到任何解决方案的问题。 我想要达到的目标:

我有一个自定义的
ListView
适配器。我想在每个列表项中添加一个
弹出菜单
已付款、未付款、已交付、未交付。

菜单xml:

<menu xmlns:androclass="http://schemas.android.com/apk/res/android" >  

    <item  
        android:id="@+id/one"  
        android:title="played"/>  

    <item  
        android:id="@+id/two"  
        android:title="not played"/>  

</menu>  

代码:

listView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
PopupMenu popup=新建PopupMenu(MainActivity.this,listView);
//使用xml文件打开弹出窗口
充气(R.menu.popup\u菜单,popup.getMenu());
popup.show();
popup.setOnMenuItemClickListener(新建PopupMenu.OnMenuItemClickListener(){
公共布尔值onMenuItemClick(菜单项){
您单击的Toast.makeText(MainActivity.this):+item.getTitle(),Toast.LENGTH\u SHORT.show();
返回true;
}  
});  
意向意向=新意向(MainActivity.this、EditActivity.class);
意向。额外(“id”,id);
intent.putExtra(“food”,foods.getFoods().get((int)id));
startActivityForResult(意向、食品编辑);
}
});
尝试一下:

res/menu/mylistmenu.xml

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

    <item
        android:id="@+id/notpaid"
        android:orderInCategory="101"
        android:title="Not Paid"/>

    <item
        android:id="@+id/delivered"
        android:orderInCategory="103"
        android:title="Delivered"/>

    <item
        android:id="@+id/notdelivered"
        android:orderInCategory="104"
        android:title="Not Delivered"/>
</menu>

ListItem单击弹出窗口

//状态文本视图

TextView statustxt = (TextView) findViewById(R.id.statusText);

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            PopupMenu popup = new PopupMenu(view.getContext(),view );
             MenuInflater inflater = popup.getMenuInflater();
              inflater.inflate(R.menu.mylistmenu, popup.getMenu());

              //Handle Menu Click
              popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {

            @Override
            public boolean onMenuItemClick(MenuItem item) {
                {
                    switch (item.getItemId()){
                        case option_one:
                            statustxt.setText("Paid");
                        case option_two:
                            statustxt.setText("Not Paid");
                        case option_three:
                            statustxt.setText("Delivered");
                        case option_four:
                            statustxt.setText("Not Delivered");
                    }
                }
                return false;
            }
        });
            popup.show();

            Intent intent = new Intent(MainActivity.this, EditActivity.class);
            intent.putExtra("id", id);
            intent.putExtra("food", foods.getFoods().get((int) id));
            startActivityForResult(intent, FOOD_EDIT);
        }
    });
TextView statustxt=(TextView)findViewById(R.id.statusText);
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
PopupMenu popup=新的PopupMenu(view.getContext(),view);
MenuInflater充气器=弹出窗口。getMenuInflater();
充气器。充气(R.menu.mylistmenu,popup.getMenu());
//句柄菜单单击
setOnMenuItemClickListener(新的PopupMenu.OnMenuItemClickListener(){
@凌驾
公共布尔onMenuItemClick(菜单项){
{
开关(item.getItemId()){
案例选项一:
statustxt.setText(“已支付”);
案例选项二:
statustxt.setText(“未支付”);
案例选项三:
statustxt.setText(“已交付”);
案例选项四:
statustxt.setText(“未交付”);
}
}
返回false;
}
});
popup.show();
意向意向=新意向(MainActivity.this、EditActivity.class);
意向。额外(“id”,id);
intent.putExtra(“food”,foods.getFoods().get((int)id));
startActivityForResult(意向、食品编辑);
}
});

单击列表项时会发生什么情况?我想在单击列表项时添加一个弹出菜单在我的代码中,有一个onclick菜单侦听器。。案例选项三://在此处添加您的代码(标记为已支付/未支付)。请您明确您的要求。单击项目后,将显示一个弹出菜单,其中包含四个选项(已付款、未付款、已交付、未交付)。您希望接下来做什么?如果单击“付费”,是否希望它在任何地方显示“付费”?如果是这样,您可以在版面中添加新的文本视图,并在单击“付费”后进行更新。mytextview.setText(“已付”);您可以在版面中添加新的文本视图,并在单击“付费”后进行更新。mytextview.setText(“已付”);
TextView statustxt = (TextView) findViewById(R.id.statusText);

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            PopupMenu popup = new PopupMenu(view.getContext(),view );
             MenuInflater inflater = popup.getMenuInflater();
              inflater.inflate(R.menu.mylistmenu, popup.getMenu());

              //Handle Menu Click
              popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {

            @Override
            public boolean onMenuItemClick(MenuItem item) {
                {
                    switch (item.getItemId()){
                        case option_one:
                            statustxt.setText("Paid");
                        case option_two:
                            statustxt.setText("Not Paid");
                        case option_three:
                            statustxt.setText("Delivered");
                        case option_four:
                            statustxt.setText("Not Delivered");
                    }
                }
                return false;
            }
        });
            popup.show();

            Intent intent = new Intent(MainActivity.this, EditActivity.class);
            intent.putExtra("id", id);
            intent.putExtra("food", foods.getFoods().get((int) id));
            startActivityForResult(intent, FOOD_EDIT);
        }
    });