5-11

public class MainActivity extends Activity {
    //GridView(网格布局)中android:numColumns="3"给他设置了三列
//  如果不设,默认的是一列(效果就会和listView一样)
    GridView gridView;
    //Palace类,继承了BaseAdapter(基础适配器)
    Palace palace;
//  定义一个name的字符串用来表示应用名称
    String name[]={"家园卫士","安装包","游戏盒子",
            "链接电脑","记事本","垃圾箱","流量管理","软件修复","系统设置"};
//  定义一个icon的数字int类型用来把图片的地址引用过来
    int[] icon={R.drawable.widget01,R.drawable.widget02,R.drawable.widget03,
            R.drawable.widget04,R.drawable.widget05,R.drawable.widget06,
            R.drawable.widget07,R.drawable.widget08,R.drawable.widget09,};
//重写方法
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
//  ")f"暗写
//      初始化对GridView的操作(findViewById是用来指定id的!)
        gridView=(GridView)findViewById(R.id.gridview);
// new新建了一个Palace因为inflate要加载布局所以要穿一个Context上下文
        palace = new Palace(this, name, icon);
//      设置适配器
        gridView.setAdapter(palace);
        
        
    }
}

主xml里写

<GridView
        android:id="@+id/gridview"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello_world"
        android:numColumns="3"
<!--
在listView定义属性android:numColumns没用
-->
        >
</GridView>
package com.example.palace;

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

public class Palace extends BaseAdapter {
String[] mname;//定义一个接受构造传入的应用名
int[] icon; //定义一个接受构造传入的图片ID数组
Context context;//接受上下文
//上面都是通过构造来传递
    public Palace(Context context,String[] mname, int[] icon) {
    super();
    this.mname = mname;
    this.icon = icon;
    this.context=context;
}
//设置条目的总数(一般以集合的长度,因为集合长度可变)
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return icon.length;
    }
//返回指定下标对应的数据对象 
    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return icon[position];
    }
//返回每个条目的ID
    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }
//返回指定下标所对应的Item的View对象
//  position下标
//  convertView可以复用的缓存Item视图对象, 前n+1个为null
//  parent ViewGroup对象
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
//      优化
        pag pbg =null;//else访问到同一个
        if(convertView==null){//如果显示的条目等于空是我再给他赋值,
//          不然会一直赋值导致内存溢出
            pbg =new pag();//新建一个存放数据的
            //加载一个hen布局赋值到convertView,Item的视图对象
            convertView=View.inflate(context, R.layout.hen, null);
//          convertView.findViewById//必须明写
            pbg.image=(ImageView) convertView.findViewById(R.id.image);
//          hen里面的image和text
            pbg.text=(TextView) convertView.findViewById(R.id.text);
//          有了布局再设置里面的控件.(pbg设置控件)
            convertView.setTag(pbg);
    }else{
        //如果已经加载的显示的条目有值,
//      获取
        pbg= (pag) convertView.getTag();
    }
//      给控件赋值
        pbg.image.setImageResource(icon[position]);
        pbg.text.setText(mname[position]);
        return convertView;
    }
    class pag{//数据包
        ImageView image;
        TextView text;
    }
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <ImageView 
        android:id="@+id/image"
        android:layout_width="50dp"
        android:layout_marginTop="5dp"
        android:layout_gravity="center"
        android:layout_height="50dp"
        />
    <TextView 
        android:id="@+id/text"
        android:textSize="20dp"
        android:layout_marginTop="5dp"
        android:layout_gravity="center"
         android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
</LinearLayout>


作者:往事烦多
链接:https://www.jianshu.com/p/d1eb411225be
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

猜你喜欢

转载自blog.csdn.net/qiaoyihebg/article/details/80331995