2017-01-09 25 views
0

我需要幫助解決問題我目前找不到任何解決方案。 我想實現的:關於按下列表項目視圖時的彈出式菜單

我有一個自定義ListView適配器。對每個Listitem我想添加一個popup menu像 支付,沒有支付,交付,不交付。

+0

什麼,當你點擊列表項發生什麼呢? –

+0

我想添加一個彈出菜單,當我點擊列表項目 –

回答

0

試試這個:

RES /菜單/ 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> 

列表項的OnClick彈出

//狀態的TextView

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); 
     } 
    }); 
+0

在我的代碼中,有一個onclick菜單監聽器.. case option_three: //在此處添加您的代碼(將其標記爲已付/未付款) –

+0

你能否清楚你的要求?一旦你點擊一個項目,它會顯示一個彈出菜單,其中有四個選項(付費,未付費,已交付,未交付)。接下來你會做什麼? –

+0

如果您點擊付費,您是否希望它在任何地方顯示「付費」? –

1

菜單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(new AdapterView.OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

        PopupMenu popup = new PopupMenu(MainActivity.this, listView); 
        //Inflating the Popup using xml file 
        popup.getMenuInflater().inflate(R.menu.popup_menu, popup.getMenu()); 
      popup.show(); 
    popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { 
      public boolean onMenuItemClick(MenuItem item) { 
       Toast.makeText(MainActivity.this,"You Clicked : " + item.getTitle(),Toast.LENGTH_SHORT).show(); 
       return true; 
      } 
      }); 

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