GridView+BaseAdapter

本文介绍了如何使用GridView结合BaseAdapter来实现更灵活的图片和文字展示,相较于使用GridView与SimpleAdapter,这种方法提供了更高的定制性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GridView+BaseAdapter相比GridView+SimpleAdapter可以较为自由的设置图片和文字


layout-grid_item:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical">gravity:center 居中

    <ImageView
        android:id="@+id/image_menu"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:src="@mipmap/ic_launcher"/>

    <TextView
        android:id="@+id/text_menu"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="菜单"/>

</LinearLayout>

layout-activity_main:

    <GridView
        android:id="@+id/my_gv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:verticalSpacing="20dp"
        android:numColumns="3">numColumns:3列,verticalSpacing:行间距

    </GridView>

MainActivity:

public class MainActivity extends AppCompatActivity {

    List<MenuItem>datalist;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        GridView gridView=(GridView)findViewById(R.id.my_gv);

        datalist=new ArrayList<>();

        datalist.add(new MenuItem("菜单1",R.drawable.ic_launcher));
        datalist.add(new MenuItem("菜单2",R.drawable.ic_launcher));
        datalist.add(new MenuItem("菜单3",R.drawable.ic_launcher));
        datalist.add(new MenuItem("菜单4",R.drawable.ic_launcher));
        datalist.add(new MenuItem("菜单5",R.drawable.ic_launcher));

        MenuAdapter menuAdapter=new MenuAdapter();

        gridView.setAdapter(menuAdapter);

    }

    class MenuAdapter extends BaseAdapter{

        @Override
        public int getCount() {
            return datalist.size();
        }

        @Override
        public Object getItem(int i) {
            return datalist.get(i);
        }

        @Override
        public long getItemId(int i) {
            return i;
        }

        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {

            View menuView= LayoutInflater.from(MainActivity.this).inflate(R.layout.grid_item,null);

            TextView textView=(TextView)menuView.findViewById(R.id.text_menu);
            textView.setText(datalist.get(i).MenuName.toString());

            ImageView imageView=(ImageView)menuView.findViewById(R.id.image_menu);
            imageView.setImageResource(datalist.get(i).MenuDrawableId);


            return menuView;
        }
    }


    class MenuItem{
        String MenuName;
        int MenuDrawableId;
        MenuItem(String MenuName,int MenuDrawableId){
            this.MenuName=MenuName;
            this.MenuDrawableId=MenuDrawableId;
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值