GridView 使用在我们开发过程中也经常使用,下面就给大家介绍两种用法:

第一种比较简单,使用简单的适配器:

第一种比较简单,效果如下图:

GridView 的两种使用方法_List

public class MainActivity extends AppCompatActivity {


private GridView gridView;
List<ImageBean> data = new ArrayList<>();

ImageBean bean;
GridViewAdapter gridViewAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//initView1();
intiView2();
}

public void initView1(){

gridView = findViewById(R.id.id_gridView);
//图片数据
int[] images = {R.drawable.ic_launcher_background, R.drawable.ic_launcher_background, R.drawable.ic_launcher_background,
R.drawable.ic_launcher_background, R.drawable.ic_launcher_background, R.drawable.ic_launcher_background,
R.drawable.ic_launcher_background, R.drawable.ic_launcher_background, R.drawable.ic_launcher_background};
//图片编号
String[] name = {"No_1", "No_2", "No_3", "No_4", "No_5", "No_6",
"No_7", "No_8", "No_9"};
//初始化数据
List<Map<String, Object>> data = new ArrayList<>();
for (int i = 0; i < images.length; i++) {
Map<String, Object> map = new HashMap<>();
map.put("ItemImage", images[i]);

map.put("ItemText", name[i]);
data.add(map);
}

String[] itemname = {"ItemImage", "ItemText"};
int[] item = {R.id.image1, R.id.text1};
//实例化一个适配器
SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.item, itemname, item);
//为GridView设置适配器
gridView.setAdapter(adapter);
}

 

第二种个性化定制比较强,有自定义的适配器,还有自定义的layout 

public void intiView2(){

gridView = findViewById(R.id.id_gridView);
//图片数据
int[] images = {R.drawable.ic_launcher_background, R.drawable.ic_launcher_background, R.drawable.ic_launcher_background,
R.drawable.ic_launcher_background, R.drawable.ic_launcher_background, R.drawable.ic_launcher_background,
R.drawable.ic_launcher_background, R.drawable.ic_launcher_background, R.drawable.ic_launcher_background};
//图片编号
String[] name = {"No_1", "No_2", "No_3", "No_4", "No_5", "No_6",
"No_7", "No_8", "No_9"};


//初始化数据
for (int i = 0; i < images.length; i++) {
bean = new ImageBean(images[i], name[i]);
data.add(bean);
}
//实例化适配器
gridViewAdapter = new GridViewAdapter(data, this);

//设置适配器
gridView.setAdapter(gridViewAdapter);
}

Item.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:orientation="vertical">

<ImageView
android:id="@+id/image1"
android:layout_width="80dp"
android:layout_height="100dp"/>

<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

</LinearLayout>

自定义适配器如下:

package com.news.today.gridview;

import android.content.Context;
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;



public class GridViewAdapter extends BaseAdapter {

private List<ImageBean> data;//显示数据

private Context context;//传入上下文

GridViewAdapter(List<ImageBean> data, Context context) {
this.data = data;
this.context = context;
}

@Override
public int getCount() {
return data.size();
}

@Override
public Object getItem(int position) {
return data.get(position);
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view;
ViewHolder viewHolder;
if (convertView == null) {
//加载子布局
view = LayoutInflater.from(context).inflate(R.layout.item, parent, false);
viewHolder = new ViewHolder();
viewHolder.imageView = (ImageView) view.findViewById(R.id.image1);
viewHolder.textView = (TextView) view.findViewById(R.id.text1);
view.setTag(viewHolder);
} else {
view = convertView;
viewHolder = (ViewHolder) view.getTag();
}
viewHolder.imageView.setImageResource(data.get(position).getBitmapId());
viewHolder.textView.setText(data.get(position).getName());
return view;
}

private class ViewHolder {
ImageView imageView;
TextView textView;
}
}