美文网首页
Kotlin笔记(46) — GridView的使用

Kotlin笔记(46) — GridView的使用

作者: 奔跑的佩恩 | 来源:发表于2021-01-31 09:19 被阅读0次

前言

在上一节,我们学习了ListView的使用,这节让我们来学习下网格布局GridView.

今天涉及内容:

  1. GridView属性
  2. GridView在MainActivity中使用
  3. 效果图和项目结构图
  4. 适配器GridAdapter源码

先来波效果图


效果图.gif

一.GridView属性

GridView作为一个网格视图控件,具有以下基本属性:

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

二.GridView在MainActivity中使用

先在MainActivity对应布局activity_main.xml中添加GridView控件,类似如下:

    <GridView
        android:id="@+id/mGridView"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/mBtnTest"/>

然后给出GridViewMainActivity中使用代码:

open class MainActivity : AppCompatActivity(), View.OnClickListener {

    private var nameList:MutableList<String> = mutableListOf("幼稚园","小学","初中","高中","大学")

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        initData()
        setListener()
    }

    private fun initData() {
        var count:Int=4 //一行网格个数

        //ListView设置适配器
        mGridView.numColumns=count //一行显示的网格个数
        mGridView.verticalSpacing=10 //单个网格上下间距
        mGridView.horizontalSpacing=3 //单个网格左右间距
        //初始化适配器
        var adapter:GridAdapter<String> = GridAdapter(nameList,this,count)
        mGridView.adapter=adapter  //设置适配器

        //item点击事件
mGridView.setOnItemClickListener(object:AdapterView.OnItemClickListener{
            override fun onItemClick(
                parent: AdapterView<*>?,
                view: View?,
                position: Int,
                id: Long
            ) {
                toast("点击了第${position}项,值为${nameList[position]}")
            }

        })
    }

    private fun setListener() {
        mBtnTest.setOnClickListener(this@MainActivity)

    }

    override fun onClick(v: View) {
       when(v.id){
           R.id.mBtnTest -> {

           }
       }
    }
}

三.效果图和项目结构图

效果图.gif 项目结构图.png

四.适配器GridAdapter源码

在适配器GridAdapter代码中,我们着重要注意以下两点:

  • 如何实现itemView的宽高一致
  • MyViewHolder的优化写法

下面给出GridAdapter源码:

相关文章

网友评论

      本文标题:Kotlin笔记(46) — GridView的使用

      本文链接:https://www.haomeiwen.com/subject/bqfizktx.html