GridView(网格视图)是按照行列的方式来显示内容的,一般用于显示图片,图片等内容,比如实现九宫格图,用GridView是首选,也是最简单的。主要用于设置Adapter。
GridView常用的XML属性:
属性名称
描述
android:columnWidth
设置列的宽度。
android:gravity
设置此组件中的内容在组件中的位置。可选的值有:top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical可以多选,用“|”分开。
android:horizontalSpacing
两列之间的间距。
android:numColumns
设置列数。
android:stretchMode
缩放模式。
android:verticalSpacing
两行之间的间距。
LayoutResource
<?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">
<GridView
android:id="@+id/grideview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numColumns="3"></GridView>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageview"
android:layout_width="100dp"
android:layout_height="100dp" />
<TextView
android:layout_centerHorizontal="true"
android:id="@+id/textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="水果名"
android:layout_below="@id/imageview"
android:gravity="center"/>
</RelativeLayout>
Fruit类
public class Fruits {
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getImg() {
return img;
}
public void setImg(int img) {
this.img = img;
}
private String name;
private int img;
public Fruits(String name, int img) {
this.name = name;
this.img = img;
}
}
FruitAdapter
package com.example.administrator.mygridview;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.List;
/**
* Created by Administrator on 2015/8/26.
*/
public class FruitsAdapter extends BaseAdapter {
private List<Fruits> fruits;
private LayoutInflater inflater;
public FruitsAdapter(List<Fruits> fruits, LayoutInflater inflater) {
this.fruits = fruits;
this.inflater = inflater;
}
@Override
public int getCount() {
return fruits.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Fruits fruit=fruits.get(position);
ViewHolder vh=null;
if(convertView==null){
convertView=inflater.inflate(R.layout.grideview_item,null);
vh=new ViewHolder();
vh.imageView= (ImageView) convertView.findViewById(R.id.imageview);
vh.textView= (TextView) convertView.findViewById(R.id.textview);
convertView.setTag(vh);
}else {
vh = (ViewHolder) convertView.getTag();
}
vh.imageView.setImageResource(fruit.getImg());
vh.textView.setText(fruit.getName());
return convertView;
}
class ViewHolder{
private TextView textView;
private ImageView imageView;
}
}
MainActivity
package com.example.administrator.mygridview;
import android.app.Activity;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Adapter;
import android.widget.GridView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends Activity {
private LayoutInflater inflater;
private List<Fruits> fruits;
private GridView mGradeview;
private FruitsAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mGradeview= (GridView)findViewById(R.id.grideview);
inflater=getLayoutInflater();
fruits=new ArrayList<>();
for(int i=0;i<30;i++) {
Fruits apple = new Fruits("苹果", R.drawable.apple);
fruits.add(apple);
Fruits banana = new Fruits("香蕉", R.drawable.banana);
fruits.add(banana);
Fruits grape = new Fruits("葡萄", R.drawable.grape);
fruits.add(grape);
}
mAdapter=new FruitsAdapter(fruits,inflater);
mGradeview.setAdapter(mAdapter);
}
}