九宫格

九宫格

对于九宫格的设置,我布置了三个xml页面和四个java类。
activity_main布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.jiemianjiugongge.MainActivity">
//定义一个用于显示fragment的空间,因为九宫格布局是用fragment做的
    <fragment
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:name="com.example.jiemianjiugongge.BlankFragment"//以指明要显示的fragment页面
        android:id="@+id/fragment"/>

</LinearLayout>

activity_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">
    //让九宫格的每一个图标显示为上面图片下面文字内容的显示格式
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:id="@+id/img"/>
        <TextView
            android:layout_gravity="center"
            android:id="@+id/item_title"
            android:textSize="20sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    </LinearLayout>

</LinearLayout>

fragment_Blank布局:

    //将GridView控件加入fragment格式中
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.example.jiemianjiugongge.BlankFragment">
    <GridView
        android:layout_marginTop="30dp"
        android:id="@+id/GridView1"
        android:stretchMode="columnWidth"
        android:gravity="center"
        android:verticalSpacing="10dp"
        android:numColumns="3"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </GridView>

</FrameLayout>

创建一个delicious类:

public class delicious {
    private String info;
    private int img;
    public delicious(String info,int img){
        this.info=info;
        this.img=img;
        return;
    }
    public void setInfo(String info){
        this.info=info;
    }
    public int getImg(){
        return img;
    }
}

创建CustonAdapter类:

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.util.List;

/**
 * Created by ASUS on 2017/5/7.
 */

public class CustonAdapter extends BaseAdapter {
    private List<delicious> datas;
    private Context context;
    //通过构造方法获取需要的对象:上下文和数据
    public CustonAdapter(Context context,List datas){
        this.context=context;
        this.datas=datas;
    }
    @Override
    public int getCount() {
        return datas.size();
    }

    @Override
    public Object getItem(int position) {
        return datas.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }
    //自定义Adapter一定要重写getView()方法
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        //1.获取view
        if(convertView==null){
            convertView= LayoutInflater.from(context).inflate(R.layout.activity_item,null);
        }
        //获取view中的各个控件对象
        ImageView img=(ImageView) convertView.findViewById(R.id.img);
        TextView info= (TextView) convertView.findViewById(R.id.item_title);
        //获取view中的每一个控件赋值
        delicious delicious=datas.get(position);
        img.setImageResource(delicious.getImg());
        info.setText(delicious.getInfo());
        return convertView;
    }
}

在BlankFragment中定义图标数据:

package com.example.jiemianjiugongge;

import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.GridView;

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


public class BlankFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        //获取view
        View view=inflater.inflate(R.layout.fragment_blank,container,false);

        //给GridView加载数据
        //获取数据
//用集合的方式把数据装入delicious里的方法里
        List<delicious> datas=new ArrayList<>();
        datas.add(new delicious("饼干",R.mipmap.ic_launcher));
        datas.add(new delicious("棒棒糖",R.mipmap.ic_launcher));
        datas.add(new delicious("跳跳糖",R.mipmap.ic_launcher));
        datas.add(new delicious("甜甜圈",R.mipmap.ic_launcher));
        datas.add(new delicious("薯条",R.mipmap.ic_launcher));
        datas.add(new delicious("薯片",R.mipmap.ic_launcher));
        datas.add(new delicious("浪味仙",R.mipmap.ic_launcher));
        datas.add(new delicious("旺仔奶糖",R.mipmap.ic_launcher));
        datas.add(new delicious("果冻",R.mipmap.ic_launcher));
        //创建适配器
        CustonAdapter adapter=new CustonAdapter(getActivity(),datas);
        //给GridView设置设配器
        GridView gridview=(GridView)view.findViewById(R.id.GridView1);
        gridview.setAdapter(adapter);

        return view;
    }
}
posted @ 2017-05-08 15:10  李铭彦  阅读(226)  评论(0编辑  收藏  举报