兩個佈局文件
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);
}
}