• 2.14GridView(网格视图)_Adapter适配器_Android


    TOC

    GridView(网格视图)_Adapter适配器_Android

    • android:columnWidth:设置列的宽度
    • android:gravity:组件对其方式
    • android:horizontalSpacing:水平方向每个单元格的间距
    • android:verticalSpacing:垂直方向每个单元格的间距
    • android:numColumns:设置列数
    • android:stretchMode:设置拉伸模式,可选值如下: none:不拉伸;spacingWidth:拉伸元素
    • 间的间隔空隙 columnWidth:仅仅拉伸表格元素自身 spacingWidthUniform:既拉元素间距又拉伸他们之间的间隔空隙

    总页面

    <?xml version="1.0" encoding="utf-8"?>
    <GridView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/gridView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:horizontalSpacing="10dp"
        android:verticalSpacing="10dp"
        android:numColumns="3" >
        <!--numColumns  一行有几列
            verticalSpacing上下网格间距
            horizontalSpacing 水平间距
        -->
    
    </GridView>

    Activity

    package com.ttit.helloworld;
    
    import android.content.Context;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.GridView;
    import android.widget.Toast;
    
    import androidx.annotation.Nullable;
    import androidx.appcompat.app.AppCompatActivity;
    
    import com.ttit.helloworld.adapter.GridViewAdpater;
    import com.ttit.helloworld.entity.Icon;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class GridViewActivity extends AppCompatActivity {
        private Context mContext;
        private GridView grid_photo;
        private GridViewAdpater mAdapter = null;
        //放置网格的图标
        private List<Icon> mData = null;
    
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.gridview_layout);
    
            mContext = this;
            //视图层V
            grid_photo = (GridView) findViewById(R.id.gridView);
            //数据源M
            mData = new ArrayList();
            //Icon参数:图片,图片名
            mData.add(new Icon(R.mipmap.iv_icon_1, "图标1"));
            mData.add(new Icon(R.mipmap.iv_icon_2, "图标2"));
            mData.add(new Icon(R.mipmap.iv_icon_3, "图标3"));
            mData.add(new Icon(R.mipmap.iv_icon_4, "图标4"));
            mData.add(new Icon(R.mipmap.iv_icon_5, "图标5"));
            mData.add(new Icon(R.mipmap.iv_icon_6, "图标6"));
            mData.add(new Icon(R.mipmap.iv_icon_7, "图标7"));
            //控制层C
            mAdapter = new GridViewAdpater(mData, mContext);
    
            grid_photo.setAdapter(mAdapter);
            //点击事件
            grid_photo.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    Toast.makeText(mContext, "你点击了~" + position + "~项", Toast.LENGTH_SHORT).show();
                }
            });
    
        }
    }
    

    适配器,控制层GridViewAdpater

    package com.ttit.helloworld.adapter;
    
    import android.content.Context;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    import com.ttit.helloworld.R;
    import com.ttit.helloworld.entity.Icon;
    
    import java.util.List;
    //自定义的网格适配器
    public class GridViewAdpater extends BaseAdapter {
        //数据
        private List<Icon> mData;
        private Context mContext;
    
        public GridViewAdpater(List<Icon> mData, Context mContext) {
            this.mData = mData;
            this.mContext = mContext;
        }
        //组件数量
        @Override
        public int getCount() {
            return mData != null ? mData.size() : 0;
        }
        //获取一个网格的组件
        @Override
        public Object getItem(int position) {
            return mData.get(position);
        }
    
        @Override
        public long getItemId(int position) {
            return position;
        }
    
        //创建每一个网格组件的布局
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder = null;
            if (convertView == null) {
                holder = new ViewHolder();
                //创建组件页面(定义的一个网格的组件,租,)
                convertView = LayoutInflater.from(mContext).inflate(R.layout.item_grid_icon
                        , parent
                        , false);
                holder.img_icon = (ImageView) convertView.findViewById(R.id.img_icon);
                holder.name = (TextView) convertView.findViewById(R.id.txt_icon);
                //将这一个网格的信息对象设置进去
                convertView.setTag(holder);
            } else {
                holder = (ViewHolder) convertView.getTag();
            }
            holder.img_icon.setImageResource(mData.get(position).getIconId());
            holder.name.setText(mData.get(position).getName());
            return convertView;
        }
        //记录这个网格的信息
        static class ViewHolder {
            private ImageView img_icon;
            private TextView name;
        }
    
    }
    

    单个网格页面item_grid_icon.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="5dp">
    
        <ImageView
            android:id="@+id/img_icon"
            android:layout_width="64dp"
            android:layout_height="64dp"
            android:layout_centerInParent="true"
            android:src="@mipmap/iv_icon_1" />
    
        <TextView
            android:id="@+id/txt_icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/img_icon"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="30dp"
            android:text="呵呵"
            android:textSize="18sp" />
    
    
    </RelativeLayout>

  • 相关阅读:
    Linux OTG当串口、网口、U盘
    Linux 双网卡双网段通信
    Buildroot Savedefconfig
    OTG作为大容量设备
    EntityFramework Core问题处理集锦(一)
    EntityFramework Core数据查询
    ASP.NET Core MVC请求超时设置解决方案
    EntityFramework Core迁移时出现数据库已存在对象问题解决方案
    EntityFramework Core映射关系详解
    探讨SQL Server并发处理存在就更新七种解决方案
  • 原文地址:https://www.cnblogs.com/ziyue7575/p/0db20898c6e5074e62bba747e7f899ae.html
Copyright © 2020-2023  润新知