2017-01-09 2 views
0

Мне нужна помощь с проблемой. Я пока не нашел никакого решения. Что я хочу достичь:О всплывающем меню при нажатии списка элементов списка

У меня есть пользовательский адаптер ListView. Для каждого Listitem я хочу добавить popup menu, как , оплаченный, не оплаченный, delivred, not delivred.

+0

Что происходит при нажатии на элемент списка? –

+0

Я хочу добавить всплывающее меню, когда я нажимаю на элемент списка –

ответ

0

Дайте этому попытку:

Рез/меню/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 OnClick Popup

// Статус 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

Если вы нажмете «Paid», вы хотите, чтобы он отображал «Paid» в любом месте? –

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); 
       } 
      }); 
Смежные вопросы