Android基础——用GridView和适配器实现简单图片浏览器

首先你要了解什么是GridView?

  • GridView也叫做网格视图,它是通过行列的形式来显示组件的,通常可以用来显示图片或图标。常见的应用如相册。
  • 网格视图的内容的指定不同向其他布局那样通过某个属性来指定,必须通过适配器(Adapter)来指定
    Android基础——用GridView和适配器实现简单图片浏览器_第1张图片

然后你要知道什么适配器Adapter?

Android基础——用GridView和适配器实现简单图片浏览器_第2张图片

  • 适配器主要是连接后端数据和前端显示的接口
  • 是数据和组件之间的重要纽带
  • 如图数据可以是集合列表(ArrayList)也可以是数据库游标对象(Cursor),如果想要把数据显示到GridView上,直接显示是不行的。这时候就可以通过Adapter这个桥梁将数据显示到GridView上。

常用的适配器

Android基础——用GridView和适配器实现简单图片浏览器_第3张图片

  • ArrayAdapter 数组适配器,通常用于将数组的多个值包装成多个列表项,只能显示一行文字
  • SmipleAdapter 简单适配器,通常用于把ArrayList集合的多个值包装成列表项,可以自定义各种效果,功能强大
  • SmipleCursorAdapter 简单数据库适配器,主要是将数据库的内容以列表的形式展现出来
  • BaseAdater 基础适配器,可以对各个列表项进行最大程度的定制,具有很高的灵活性

文件结构

Android基础——用GridView和适配器实现简单图片浏览器_第4张图片

Split展示

Android基础——用GridView和适配器实现简单图片浏览器_第5张图片

上代码

activity_main.xml文件




    



MainActivity.java文件

package com.example.myapplication_picturebrowser;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridLayout;
import android.widget.GridView;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {
    //定义一个整形数组用来存放图片
    private final int[] picture=new int[]{R.drawable.a,R.drawable.b,
            R.drawable.c,R.drawable.d,
            R.drawable.e,R.drawable.f,
            R.drawable.a,R.drawable.b,
            R.drawable.c,R.drawable.d,
            R.drawable.e};

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

        //创建GridView对象, 通过findViewById()方法获取网格视图的id,即gridview。并强制类型准换为GridView类型
        GridView gridView=(GridView) findViewById(R.id.gridview);

        //通过setAdapter()方法为网格视图设置适配器,new一个ImageAdapter(),this表示上下文对象,picture表示存放图片的数组
        gridView.setAdapter(new ImageAdapter(this,picture));
    }
}

ImageAdapter.java文件

package com.example.myapplication_picturebrowser;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;

import java.util.ArrayList;
/**
 * 创建一个图像适配器继承于BaseAdapter适配器,并重写方法
 *
 * */
public class ImageAdapter extends BaseAdapter {
    //定义私有类型的上下文对象
    private Context mContext;
    //定义一个数组用来接收存放图片的数组传值
    private int[] picture;
    public ImageAdapter(Context c,int[] list){
        mContext=c;
        picture=list;
    }

    @Override
    public int getCount() {
        return picture.length;//返回图片数组的长度,即有多少张图片
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        //创建一个新的ImageView对象用于显示图片
        ImageView imageView;
        //判断传过来的值是否为空,
        if(convertView==null){
            imageView=new ImageView(mContext);//为空时开始初始化
            imageView.setLayoutParams(new GridView.LayoutParams(350,360));//设置图片显示的宽高
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);//设置纵横比缩放完全覆盖ImageView
        }else{
            imageView=(ImageView) convertView;//不为空时,将获取到的图片放入到imageview组件当中,需要强制转换
        }
        imageView.setImageResource(picture[position]);//通过setImageResource()方法设置图片数组当前位置
        return imageView;//返回这个imageview   ——到这一步我们的图片适配器就编写完成了
    }
}


好了你就可以看到最开始展示的图片效果了!!!

你可能感兴趣的:(Android学习中遇到的坑,android)