如果是列表(单列多行形式)的使用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();
}
}