Android列表视图布局类似于Google Play

时间:2014-03-10 07:49:17

标签: android android-listview android-custom-view android-listfragment

我想实现类似于Google Play的列表布局,其中包含每个行的菜单。请帮我创建一个。

Google Play List view

我是否需要创建弹出菜单,或者有任何可用的选项来实现此目的。

由于

2 个答案:

答案 0 :(得分:43)

看起来你正试图在显示的图像中完全按照这种方式进行操作。我只是举例说明我是如何实现这一目标的。

这就是我这样做的方式。不是很难。直接实现弹出菜单。

第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步:我的弹出菜单

<?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

如果有更好的解决方案,对我来说也会非常有帮助。 希望这有助于.. :))

答案 1 :(得分:0)

您可以使用Cards-UI Library