Как добавить трехточечное меню с каждым элементом списка в просмотре списка? - PullRequest
1 голос
/ 04 октября 2019

Я хотел добавить трехточечное меню с каждым элементом списка.

** Это мой метод списка просмотра, метод getView **

 @Override
public View getView(final int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = activity.getLayoutInflater();
    View inflate = inflater.inflate(R.layout.book_item_new, null, false);
    findViews(inflate);

    bookTitle.setText(books.get(position).getName());
    bookPrice.setText(books.get(position).getPrice() + " ₹");
    semBranch.setText(books.get(position).getSemester() + " Sem " + books.get(position).getBranch());
    date.setText(books.get(position).getpDate());
    senderName.setText(books.get(position).getSender());

    return inflate;
}

Ответы [ 3 ]

0 голосов
/ 04 октября 2019

Добавьте ImageView с изображением трех точек в макете book_item_new.

<ImageView
    android:id="@+id/imbPopUp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentEnd="true"
    android:layout_centerVertical="true"
    android:paddingLeft="18dp"
    android:paddingRight="18dp"
    android:src="@drawable/icon_menu_dot" /> 

И установите OnclickListener на этом imageview внутри вашего getView(), как показано ниже.

imageView.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                showPopupMenu(imageView, position);
            }
        });


    /**
     * Showing popup menu when tapping on 3 dots
     */
    private void showPopupMenu(View view, int position) {
        PopupMenu popup = new PopupMenu(context, view, Gravity.END);
        MenuInflater inflater = popup.getMenuInflater();

        inflater.inflate(R.menu.favourite_menu, popup.getMenu());

        //set menu item click listener here
        popup.setOnMenuItemClickListener(new MyMenuItemClickListener(position));
        popup.show();
    }

Теперь создайте класс прослушивателя click для вашего пункта меню, нажмите как показано ниже.

/**
     * Click listener for popup menu items
     */
    class MyMenuItemClickListener implements PopupMenu.OnMenuItemClickListener {
        int position;

        /**
         * @param position
         */
        MyMenuItemClickListener(int position) {

            this.position = position;
        }

        /**
         * Click listener for popup menu items
         */

        @Override
        public boolean onMenuItemClick(MenuItem menuItem) {
            switch (menuItem.getItemId()) {
                case R.id.view:
                   // ...
                    return true;
                case R.id.edit:
                    // ...
                    return true;
                case R.id.delete:
                    // ...
                    return true;
                case R.id.favourite:
                   // ...
                    return true;
                default:
            }
            return false;
        }
    }
0 голосов
/ 04 октября 2019

Вы можете попробовать это, В своем дизайне xml добавьте следующий код для точек

<Textview
        android:id="@+id/textViewOptions"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:text="&#8942;"
        android:textAppearance="?android:textAppearanceLarge"
        android:gravity="center_horizontal|center_vertical"/>

После этого в методе bind добавьте следующий код,

holder.textViewOptions.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            //creating a popup menu
            PopupMenu popup = new PopupMenu(context, holder.textViewOptions);
            //inflating menu from xml resource
            popup.inflate(R.menu.menu_options);
            //adding click listener
            popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem item) {
                    switch (item.getItemId()) {
                        case R.id.action_delete:
                            //handle menu1 click
                            return true;
                        case R.id.action_edit:
                            //handle menu2 click
                            return true;
                        default:
                            return false;
                    }
                }
            });
            popup.show();

        }
    });

Спасибо.

0 голосов
/ 04 октября 2019

Просто добавьте кнопку в ваш список и установите onClickListener на кнопку.
нравится

1003 *
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...