GridView组件的简单使用
1、利用数据适配器将数据填充到GridView中
2、数据适配器Adapter
- ArrayAdapter(适用于数组,将数组的值包装成多个列表项,通常只能显示一行文字)
- SimpleAdapter(适用于list列表,将list的值包装成多个列表项,可以自定义多种效果)
- SimpleCursorAdapter(适用于数据库,将数据库的内容以列表的形式展现)
- BaseAdapter(自己定制)
这里以SimpleAdapter为例,它的构造函数需要五个参数,分别是context、List<Map<K,V>>、item布局文件、new String[]{key集合}、new int[]{要显示的控件的id}
例如:
SimpleAdapter simpleAdapter = new SimpleAdapter(MainActivity.this, list, R.layout.item, new String[]{"image"}, new int[]{R.id.imageview});
3、List<Map<K,V>>
K是自己定义的,这里的K会在new String[]{key集合}用到,V则是要显示的资源信息,比如R.drawable.图片名,为每个item都实例化一个Map,添加到list中即可。Map中可以添加item的任何信息,比如Map.put(“title”, “头像”)。
例如:
List<Map<String, Object>> list = new ArrayList<>();
for(int i = 0; i < images.length; i++) {
Map<String, Object> map = new HashMap<>();
map.put("image", images[i]);
list.add(map);
}
4、最后为GridView添加数据适配器
例如:
gridView.setAdapter(simpleAdapter);
效果:
另外:用BaseAdapter
自定义一个类继承自BaseAdapter,并实现其中的四个方法。
class ImageAdapter extends BaseAdapter {
@Override
public int getCount() {
return images.length; //图片的数量
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ImageView imageView;
if(view == null) {
imageView = new ImageView(MainActivity.this);
imageView.setLayoutParams(new GridView.LayoutParams(400, 267)); //设置宽高
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); //保持纵横比来缩放
}
else {
imageView = (ImageView)view;
}
imageView.setImageResource(images[i]);
return imageView;
}
}