android 中的 gridview 的用法

兩個佈局文件

actity_main.xml

<?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=".MainActivity">

    <GridView
        android:id="@+id/gv_1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:horizontalSpacing="10dp"
        android:numColumns="5"
        android:verticalSpacing="10dp" />
</LinearLayout>

layout_grid_item.xml

<?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_1"
            android:layout_height="80dp"
            android:layout_width="80dp"
            android:background="@color/colorPrimary"
            android:scaleType="fitCenter"
            android:layout_marginLeft="10dp"
            />
       <TextView
           android:id="@+id/tv_1"
          android:layout_width="80dp"
          android:layout_height="20dp"
          android:layout_marginTop="10dp"
          android:layout_marginLeft="10dp"
          android:gravity="center"
          android:text="天貓" />
</LinearLayout>

創建實體類 Icon

package com.example.taobao;

import java.util.Arrays;
import java.util.List;

public class Icon {
    public Icon() {
    }

    @Override
    public String toString() {
        return "Icon{" +
                "name='" + name + '\'' +
                ", picture=" + picture +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getPicture() {
        return picture;
    }

    public void setPicture(Integer picture) {
        this.picture = picture;
    }

    public Icon(String name, Integer picture) {
        this.name = name;
        this.picture = picture;
    }

    private String name;
    private Integer picture;

}

 創建 適配器 MyAdapter

package com.example.taobao;

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.net.StandardSocketOptions;
import java.util.List;

public class MyAdpter extends BaseAdapter {
    private List<Icon> iconlist;
    //聲明引用
    private Context context; //第三方加載圖片時用到
    private LayoutInflater layoutInflater;

     public MyAdpter(Context context,List<Icon> iconList){
         this.iconlist=iconList;
         this.context=context;
         //利用Layout Inflate把控件所在的佈局文件加載到當前類中
         //實例化layoutinflater
         layoutInflater=LayoutInflater.from(context);
     }





    @Override
    public int getCount() {
        return iconlist.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) {
        ViewHolder holder=null;

        if(convertView==null){
            convertView=layoutInflater.inflate(R.layout.layout_grid_item,null);
            holder=new ViewHolder();
            holder.Grid_imageview=convertView.findViewById(R.id.iv_1);
            holder.Grid_textview=convertView.findViewById(R.id.tv_1);

            convertView.setTag(holder);
        }else {
            holder=(ViewHolder)convertView.getTag();
        }
        Icon icon= iconlist.get(position);
        System.out.println("要 "+icon);
        holder.Grid_textview.setText("dadsda");
        holder.Grid_imageview.setImageResource(icon.getPicture());

        return convertView;
    }
    //寫一個靜態的class 把layout_grid 的控件轉移過來使用
    class ViewHolder{
        public ImageView Grid_imageview;
        public TextView Grid_textview;
    }
}

 

MainActivity

package com.example.taobao;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.GridView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
 private GridView Gv1;
 private MyAdpter myAdpter;
 private List<Icon> iconList;
 private  int count=8;
 private Integer iconid;
 private String [] name=new String[]{"天貓","聚划算","天貓國際","外賣","天貓超市",
         "充值中心","飛豬旅行","領金幣","拍賣","分類"};
 private Integer[] picture=new Integer[12];

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Gv1=findViewById(R.id.gv_1);
        iconList=new ArrayList<>();
        for(int i=0;i<count;i++){
            Icon icon=new Icon();
            // getIdentifier()有三個參數,
            //第一個爲你的圖片資源名稱也就是 use1 等,由於我的圖片是從1開始所以要加i+1
            // 第二個爲資源目錄名稱,PS:如果你的圖片是放在mipmap目錄下,可以將drawable修改爲mipmap即可
            iconid=getResources().getIdentifier("tb"+(i+1),"drawable",getPackageName());
            icon.setName(name[i]);
            icon.setPicture(iconid);
             iconList.add(icon);

        }
        System.out.println(iconList);
        myAdpter=new MyAdpter(MainActivity.this,iconList);
        Gv1.setAdapter(myAdpter);

    }
}

項目結構圖: 

發佈了55 篇原創文章 · 獲贊 21 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章