您的位置:首页 > 移动开发 > Android开发

Android开发从入门到放弃(10)适配GridView

2016-12-31 11:36 281 查看
本篇博客来讨论如何显示一个GridView。在前两篇博客中我们使用了ListView,显示一个ListView时都使用了Adapter,Adapter的作用就是将数据源适配到列表控件中。显示GridView也需要一个ListAdapter。

首先来看activity_main.xml的代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.zdk.gridview.MainActivity">

<GridView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/gridview1"
android:columnWidth="100dip"
android:numColumns="auto_fit"></GridView>
</RelativeLayout>


上面的layout定义了一个GridView,并设置了
columnWidth
为一个固定的值,
android:numColumns="auto_fit"
意味着由Android系统来决定这个GridView要显示多少列。

跟GridView相关的属性我会在最下面列出来并稍作介绍。接着来看代码,下面是MainActivity.java的代码

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

public class MainActivity extends AppCompatActivity {

private static final String[] myListItems={"To", "be",
"or", "not", "to", "be","that", "is", "the", "question"};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

GridView gridView = (GridView) findViewById(R.id.gridview1);
ListAdapter adapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,myListItems);
gridView.setAdapter(adapter);

gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Toast.makeText(MainActivity.this, myListItems[i], Toast.LENGTH_SHORT).show();
}
});
}
}


看到了吧,还是这个套路,定义一个数组或列表(上面是
myListItems
数组),指定一个用来显示每一项的layout(上面是
android.R.layout.simple_list_item_1
),最后实例化一个ListAdapter对象并设置为GridView的Adapter,就可以将一个数组显示通过GridView显示出来。

接下来还通过
setOnItemClickListener
方法将一个匿名内部类的实例赋值给了gridView,匿名内部类中的
onItemClick
方法会在每一个元素被点击时调用。

下面来介绍一下跟GridView相关的几个属性

android:numColumns:指定GridView显示几列。可以设置为一个具体的数字,也可以设置为
auto_fit
,它的意思是让Android系统来根据列的宽度、列之间的间隔、屏幕大小等因素来决定需要显示为几列。

android:columnWidth:指定每一列的宽度

android:verticalSpacing:指定行之间的间距

android:horizontalSpacing:指定列之间的间距

android:stretchMode:如果将android:columnWidth设置为auto_fit,并且分配完列以后在水平方向还有多余的空间的话,可以使用这个属性来决定如何分配剩下的空间。有两个选项可供设置,设置为columnWidth的话,就将剩余的空间分配给每一列,设置为spacingWidth的话,就将剩下的空间分配给列之间的间距。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android gridview