Подобно Google Play

Я хочу реализовать макет списка, похожий на Google Play, в котором есть меню для каждой отдельной строки. Пожалуйста, помогите мне создать это.

Google Play List view

Мне нужно создать всплывающее меню или есть какой-либо доступный для этого вариант.

Спасибо

Ответ 1

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

Вот как я это делаю. Не очень сложно. Просто прямое создание всплывающего меню.

Шаг 1: Мой адаптер

 public class ListAdapter extends BaseAdapter{

        private ArrayList<String> mainList;


        public ListAdapter(Context applicationContext,
                ArrayList<String> questionForSliderMenu) {

            super();

            this.mainList = questionForSliderMenu;

        }

        public ListAdapter() {

            super();
            this.mainList = QuestionForSliderMenu;

        }

        @Override
        public int getCount() {

            return mainList.size();
        }

        @Override
        public Object getItem(int position) {

            return mainList.get(position);
        }

        @Override
        public long getItemId(int position) {

            return position;
        }

        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {

            if (convertView == null) {

                LayoutInflater inflater = (LayoutInflater) getApplicationContext()
                        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                convertView = inflater.inflate(R.layout.custom_row_stack, null);
            }


            TextView tv1 = (TextView) convertView
                    .findViewById(R.id.row_textView1);
            TextView tv2 = (TextView) convertView
                    .findViewById(R.id.row_install_textView1);
            ImageView imageIcon = (ImageView) convertView
                    .findViewById(R.id.row_imageView1);
            ImageView imageClick = (ImageView) convertView
                    .findViewById(R.id.row_click_imageView1);

            try {

                tv1.setText(" List Item "+ " : " + position);
                imageClick.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {



                        switch (v.getId()) {
                        case R.id.row_click_imageView1:

                            PopupMenu popup = new PopupMenu(getApplicationContext(), v);
                            popup.getMenuInflater().inflate(R.menu.clipboard_popup,
                                    popup.getMenu());
                            popup.show();
                            popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                                @Override
                                public boolean onMenuItemClick(MenuItem item) {

                                    switch (item.getItemId()) {
                                    case R.id.install:

                                        //Or Some other code you want to put here.. This is just an example.
                                        Toast.makeText(getApplicationContext(), " Install Clicked at position " + " : " + position, Toast.LENGTH_LONG).show();

                                        break;
                                    case R.id.addtowishlist:

                                        Toast.makeText(getApplicationContext(), "Add to Wish List Clicked at position " + " : " + position, Toast.LENGTH_LONG).show();

                                        break;

                                    default:
                                        break;
                                    }

                                    return true;
                                }
                            });

                            break;

                        default:
                            break;
                        }



                    }
                });

            } catch (Exception e) {

                e.printStackTrace();
            }

            return convertView;
        }

    }

Шаг 2: В действии просто установите адаптер:

public class CustomListActivity extends Activity {

    String[] numbers = { "Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10",
            "Jack", "Queen", "King" };
    ArrayList<String> QuestionForSliderMenu = new ArrayList<String>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.listview_layout);

        ListView listView = (ListView) findViewById(R.id.customlistView1);




        for (String s : numbers) {

            QuestionForSliderMenu.add(s);

        }

        ListAdapter mAdapter = new ListAdapter(this, QuestionForSliderMenu);

        listView.setAdapter(mAdapter);

    }

Шаг 3: Пользовательские элементы строки/макет:

custom_row_stack.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <ImageView
            android:id="@+id/row_imageView1"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:layout_marginTop="10dp"
            android:src="@drawable/page1" />

        <TextView
            android:id="@+id/row_textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="20dp"
            android:text="Some Item"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textColor="#333333" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <ImageView
                android:id="@+id/row_click_imageView1"
                android:layout_width="50dp"
                android:layout_height="50dp"
                android:layout_gravity="right"
                android:clickable="true"
                android:src="@drawable/dots" />

            <TextView
                android:id="@+id/row_install_textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right"
                android:padding="10dp"
                android:text="Install"
                android:textAppearance="?android:attr/textAppearanceSmall"
                android:textColor="#333333" />
        </LinearLayout>
    </LinearLayout>

Шаг 4: My Popup menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/install"
        android:title="Install" />
    <item
        android:id="@+id/addtowishlist"
        android:title="Add to wishlist" />
</menu>

Наконец: скриншот, как это выглядит.

ListView http://imageshack.com/a/img822/4144/umdy.png ListView http://imageshack.com/a/img32/9839/ne90.png ListView http://imageshack.com/a/img198/7404/prqc.png

Если есть лучшее решение, это будет очень полезно для меня. Надеюсь, это поможет..:)