Android开发:控件GridView的使用

GridView使用详解
本文详细介绍了如何使用GridView展示图片等网格内容,包括配置属性、数据准备、适配器创建及监听事件处理。

如果是列表(单列多行形式)的使用ListView,如果是多行多列网状形式的优先使用GridView。

 

复制代码
<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    

</GridView>
复制代码

 

GirdView的一些属性:

android:numColumns="auto_fit" --------列数设置为自动
android:columnWidth="90dp",----------每列的宽度,也就是Item的宽度
android:stretchMode="columnWidth"------缩放与列宽大小同步
android:verticalSpacing="10dp"----------垂直边距
android:horizontalSpacing="10dp"-------水平边距

1、准备数据源

2、新建适配器

3、加载适配器

GridView(网格视图)是按照行列的方式来显示内容的,一般用于显示图片,图片等内容,比如实现九宫格图,用GridView是首选,也是最简单的,下面来个实例,

监听事件用OnItemClickListener

举个例子:有X, Y两个listview,X里有1,2,3,4这4个item,Y里有a,b,c,d这4个item。
    如果你点了b这个item。如下:
    public void onItemClick (AdapterView<?> parent, View view, int position, long id )
    1. parent 相当于listview Y适配器的一个指针,可以通过它来获得Y里装着的一切东西,再通俗点就是说告诉你,你点的是Y,不是X ;
    2. view 是你点b item的view的句柄,就是你可以用这个view,来获得b里的控件的id后操作控件;
    3. position 是b在Y适配器里的位置(生成listview时,适配器一个一个的做item,然后把他们按顺序排好队,在放到listview里,意思就是这个b是第position号做好的);
    4.id 是b在listview Y里的第几行的位置(很明显是第2行),大部分时候position和id的值是一样的,如果需要的话,你可以自己加个log把


<?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:gravity="center"
    android:orientation="vertical"
    android:weightSum="1">

    <ImageView
        android:id="@+id/ImageView1"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:src="@drawable/biao" />

    <TextView
        android:layout_marginTop="5dp"
        android:id="@+id/TextViewG"
        android:layout_width="60dp"
        android:layout_height="wrap_content"
        android:text="电影"
        android:layout_weight="0.03"
        android:gravity="center"
        />

</LinearLayout>

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.my.wuziqigame.Main4Activity"
    >
    <!--
        GridView重要属性
        android:numColumns="3"   //一行显示多少个Item
        android:verticalSpacing="10dp"   //行间距
        android:horizontalSpacing="10dp" //列间距
    -->

    <GridView

        android:layout_width="0dp"
        android:layout_height="0dp"
        android:id="@+id/GridView1"
        android:background="@drawable/bg_b"
        android:numColumns="3"
        android:verticalSpacing="10dp"
        android:horizontalSpacing="10dp"

        tools:layout_constraintTop_creator="1"
        tools:layout_constraintRight_creator="1"
        tools:layout_constraintBottom_creator="1"
        android:layout_marginStart="0dp"
        app:layout_constraintBottom_toBottomOf="parent"
        android:layout_marginEnd="0dp"
        app:layout_constraintRight_toRightOf="parent"
        android:layout_marginTop="0dp"
        tools:layout_constraintLeft_creator="1"
        android:layout_marginBottom="0dp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintVertical_bias="1.0" />
</android.support.constraint.ConstraintLayout>

package com.example.my.wuziqigame;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Main4Activity extends AppCompatActivity implements AdapterView.OnItemClickListener {

    private GridView Gview;
    private SimpleAdapter simple1;
    private List<Map<String,Object>>detalist;
    private int[]icon={R.drawable.calendar,R.drawable.camera,R.drawable.games_control,R.drawable.messenger,R.drawable.clock,R.drawable.settings,R.drawable.weather};
    private String[]iconname={"日历","相机","游戏控制中心","消息","时间","设置","天气"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main4);
        Gview= (GridView) findViewById(R.id.GridView1);
        detalist=new ArrayList<>();
        simple1=new SimpleAdapter(this,Getdatelist(),R.layout.greadleview_activity,new String[]{"src","Text"},new int[]{R.id.ImageView1,R.id.TextViewG});
        Gview.setAdapter(simple1);
        Gview.setOnItemClickListener(this);
    }

    private List<Map<String,Object>> Getdatelist() {
        for(int i=0;i<6;i++)
        {
            Map<String,Object>one=new HashMap<String,Object>();
            one.put("src",icon[i]);
            one.put("Text",iconname[i]);
            detalist.add(one);
        }


        return detalist;
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

        Toast.makeText(this, "我是"+iconname[position], Toast.LENGTH_SHORT).show();

    }
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值