欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android学习-网格视图GridView

程序员文章站 2022-04-09 19:08:21
一、简介: GridView是一个以表格形式显示多张图片等组件。它是按照行列的方式来显示内容的,比如实现九宫格图,用GridView是首选。

一、简介:

gridview是一个以表格形式显示多张图片等组件。它是按照行列的方式来显示内容的,比如实现九宫格图,用gridview是首选。

二、代码块:

看过我上一篇博客的同学应该知道,一步一步全部步骤写出来是很费时间的,大概流程就那样,所以这次网格视图就直接上代码块了,步骤差不多。

在activity_main.xml中添加一个按钮:

<button
        android:id="@+id/btn_gridview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="gridview"
        android:textallcaps="false"/>

mainactivity在原有基础上添加:

先声明控件:

private button mbtngridview;

在oncreate:

mbtngridview=findviewbyid(r.id.btn_gridview);

在setlisteners:

mbtngridview.setonclicklistener(onclick);

在onclick:

        case r.id.btn_gridview:
        //跳转到gridview演示页面
            intent = new intent(mainactivity.this, gridviewactivity.class);
            break;

在activity_grid_view.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:padding="15dp">

    <gridview
        android:id="@+id/gv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:numcolumns="3"
        android:horizontalspacing="10dp"
        android:verticalspacing="10dp"/>
</linearlayout>

在gridviewactivity:

先声明控件:

private gridview mgv;

在oncreate:

mgv=findviewbyid(r.id.gv);

在之前新建mygridviewadapter:

public class mygridviewadapter extends baseadapter {
    @override
    public int getcount() {
        return 10;
    }

    @override
    public object getitem(int i) {
        return null;
    }

    @override
    public long getitemid(int i) {
        return 0;
    }

    @override
    public view getview(int i, view view, viewgroup viewgroup) {
        return null;
    }
}

新建layout_grid_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal">

    <imageview
        android:id="@+id/iv_grid"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:scaletype="fitcenter"
        android:background="@color/colorprimarydark"/>

    <textview
        android:id="@+id/tv_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="hello"
        android:textcolor="@color/coloraccent"
        android:gravity="center"
        android:layout_margintop="10dp"
        />
</linearlayout>

在mygridviewadapter中修改:

public class mygridviewadapter extends baseadapter {

    private context mcontext;
    private layoutinflater mlayoutinflater;

    public mygridviewadapter(context context){
        this.mcontext=context;
        mlayoutinflater=layoutinflater.from(context);
    }

    @override
    public int getcount() {
        return 10;
    }

    @override
    public object getitem(int i) {
        return null;
    }

    @override
    public long getitemid(int i) {
        return 0;
    }

    static class viewholder{
        public imageview imageview;
        public textview textview;
    }

    @override
    public view getview(int i, view view, viewgroup viewgroup) {
        viewholder holder=null;
        if(view==null){
            view=mlayoutinflater.inflate(r.layout.layout_grid_item,null);
            holder=new viewholder();
            holder.imageview=view.findviewbyid(r.id.iv_grid);
            holder.textview=view.findviewbyid(r.id.tv_title);
            view.settag(holder);
        }else {
            holder=(viewholder)view.gettag();
        }
        //赋值
        holder.textview.settext("ycm");
        glide.with(mcontext).load("http://i1.bvimg.com/670191/a72f2a8c0f289d48s.png").into(holder.imageview);
        return view;
    }
}

在gridviewactivity中添加:

mgv.setadapter(new mygridviewadapter(gridviewactivity.this));

三、运行截图:

Android学习-网格视图GridView
设置点击和长按事件之前的listview中介绍过了,就不介绍了。