Android List view layout Similar to Google play

前端 未结 2 961
囚心锁ツ
囚心锁ツ 2020-11-30 01:29

I want to implement a List layout similar to Google Play which have menu for every individual Row. Please help me to create this.

相关标签:
2条回答
  • 2020-11-30 01:52

    Looks like you are trying to do exactly the way in the image shown. I am just giving an example of how I am trying to achieve this.

    Here's how I am doing this. Not very difficult. Just straight implementation of Popup Menu.

    Step 1 : My Adapter

     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;
            }
    
        }
    

    Step 2 : In Activity, just setting the adapter:

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

    Step 3: Custom row items/layout:

    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>
    

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

    Finally: the screenshot of how it looks like.

    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

    If there's any better solution, it will be very helpful for me too. Hope this helps..:)

    0 讨论(0)
  • 2020-11-30 02:08

    You can use the Cards-UI Library

    0 讨论(0)
提交回复
热议问题