Android开发入门组件(八)——GridView

今天来讲一下GridView网格视图的使用,主要讲一下它的使用步骤。

以后如果要写GridView了,可以套着这个去写,具体可以多看看一些代码的注释

1.GridView的文件activity_gridview用来声明组件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".GridViewActivity"
    android:orientation="vertical"
    android:padding="15dp">

    <GridView
        android:id="@+id/gv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:numColumns="3"
        android:horizontalSpacing="10dp"
        android:verticalSpacing="10dp"></GridView>

</LinearLayout>

2.对应的Activity的文件GridViewActivity,设置点击事件的响应以及Adapter的应用

package com.example.androidstudy1;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.Toast;

public class GridViewActivity extends AppCompatActivity {

    GridView gv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_gridview);
        gv=findViewById(R.id.gv);
        gv.setAdapter(new MyGridViewAdapter(GridViewActivity.this));
        gv.setOnItemClickListener(new AdapterView.OnItemClickListener(){
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                Toast.makeText(GridViewActivity.this,"position"+i, Toast.LENGTH_SHORT).show();
                //跳转
            }
        });
        gv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener(){
            @Override
            public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
                Toast.makeText(GridViewActivity.this,"长按position"+i,Toast.LENGTH_SHORT).show();
                return  true;
            }
        });
    }
}

3.layout_grid_item创建数据模型,用来定义GridView中一个Item的具体属性

<?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">

    <ImageView
        android:id="@+id/iv_grid"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:scaleType="fitCenter"
        android:background="@color/colorGray"/>
    <TextView
        android:id="@+id/tv_grid"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Demo"
        android:textColor="@color/colorAccent"
        android:gravity="center"
        android:layout_marginTop="10dp"/>

</LinearLayout>

4.定义MyGridViewListAdapter,用来创建adapter适配器

package com.example.androidstudy1;

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 com.bumptech.glide.Glide;

public class MyGridViewAdapter extends BaseAdapter {
    Context context;
    LayoutInflater layoutInflater;
    public MyGridViewAdapter(Context context){
        this.context=context;
        layoutInflater=LayoutInflater.from(context);
    }
    public int getCount() {
        return 10;
    }

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

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

    static class ViewHolder{
        public ImageView imageView;
        public TextView textView;
    }
    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        ViewHolder holder=null;
        if (view==null){
            view=layoutInflater.inflate(R.layout.layout_grid_item,null);
            holder=new ViewHolder();
            holder.imageView=view.findViewById(R.id.iv_grid);
            holder.textView=view.findViewById(R.id.tv_grid);
            view.setTag(holder);
        }
        else {
            holder=(ViewHolder)view.getTag();
        }
        holder.textView.setText("猫");
        Glide.with(context).load("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1563802391&di=fd567201f8a2fb5a89fc80bcdd2fa670&imgtype=jpg&er=1&src=http%3A%2F%2Fpic25.nipic.com%2F20121122%2F11436980_223244249120_2.jpg").into(holder.imageView);
        return view;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Demo.demo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值