android 31 GridView


GridView:网格列表,也支持适配器。

 

package com.sxt.day05_01;

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

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.sxt.day05_01.entity.GeneralBean;

public class MainActivity extends Activity {
    GridView mgvGeneral;//MVC的V层,
    List<GeneralBean> mGenerals;//MVC的M层,代表十个军事家的集合
    GeneralAdapter mAdapter;//MVC的C层,
    int[] resid={
        R.drawable.baiqi,R.drawable.caocao,R.drawable.chengjisihan,
        R.drawable.hanxin,R.drawable.lishimin,R.drawable.nuerhachi,
        R.drawable.sunbin,R.drawable.sunwu,R.drawable.yuefei,
        R.drawable.zhuyuanzhang
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initData();//初始化数据
        initView();
        setListener();
    }
    
    private void setListener() {
        setOnItemClickListener();
        setOnItemLongClickListener();
        
    }

    private void setOnItemLongClickListener() {
        mgvGeneral.setOnItemLongClickListener(new OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view,
                    int position, long id) {
                Toast.makeText(MainActivity.this, mGenerals.get(position).getName()+"被长按", 2000).show();
                return true;
            }
        });
    }

    private void setOnItemClickListener() {
        mgvGeneral.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                Toast.makeText(MainActivity.this, mGenerals.get(position).getName()+"被短按", 2000).show();
            }
        });
    }

    private void initView() {
        mgvGeneral=(GridView) findViewById(R.id.gvGeneral);//获取gvGeneral
        mAdapter=new GeneralAdapter();//创建适配器
        mgvGeneral.setAdapter(mAdapter);//给gvGeneral设置适配器
    }

    private void initData() {
        //将资源中的字符串组数转换为Java数组
        String[] names=getResources().getStringArray(R.array.generals);
        mGenerals=new ArrayList<GeneralBean>();
        for (int i = 0; i < names.length; i++) {
            GeneralBean bean=new GeneralBean(resid[i], names[i]);
            mGenerals.add(bean);
        }
    }

    //适配器
    class GeneralAdapter extends BaseAdapter{

        @Override
        public int getCount() {
            return mGenerals.size();
        }

        @Override
        public GeneralBean getItem(int position) {
            return mGenerals.get(position);
        }

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

        @Override
        //得到V层的一行
        public View getView(int position, View convertView, ViewGroup parent) {
            //Inflate可用于将一个xml中定义的布局控件找出来,获取一行的布局item_generals.xml并要转换为View类型的对象
            /*
            <?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="wrap_content"
                android:orientation="vertical" >
                <ImageView 
                    android:id="@+id/ivThumb"
                    android:layout_width="80dp"
                    android:layout_height="80dp"
                    android:scaleType="fitXY"
                    android:src="@drawable/baiqi"/>
                <TextView 
                    android:id="@+id/tvName"
                    android:layout_width="80dp"
                    android:layout_height="wrap_content"
                    android:text="白起"
                    android:textSize="20sp"
                    android:gravity="center_horizontal"/>
            </LinearLayout>*/
            //
            View layout=View.inflate(MainActivity.this, R.layout.item_generals, null);
            //设置该一行
            ImageView ivThumb=(ImageView) layout.findViewById(R.id.ivThumb);
            TextView tvName=(TextView) layout.findViewById(R.id.tvName);
            GeneralBean bean=mGenerals.get(position);
            ivThumb.setImageResource(bean.getResid());
            tvName.setText(bean.getName());
            return layout;//返回一行的View即item_generals.xml的LinearLayout
        }
    }
}

main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <GridView
        android:id="@+id/gvGeneral"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:columnWidth="60dp"
        android:horizontalSpacing="2dp"
        android:verticalSpacing="5dp"
        android:numColumns="auto_fit"/>

</RelativeLayout>
item_generals.xml
<?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="wrap_content"
    android:orientation="vertical" >
    <ImageView 
        android:id="@+id/ivThumb"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:scaleType="fitXY"
        android:src="@drawable/baiqi"/>
    <TextView 
        android:id="@+id/tvName"
        android:layout_width="80dp"
        android:layout_height="wrap_content"
        android:text="白起"
        android:textSize="20sp"
        android:gravity="center_horizontal"/>
</LinearLayout>

GeneralBean.java

public class GeneralBean {

    private int resid;//图片的id值
    private String name;//军事家的姓名
    public int getResid() {
        return resid;
    }

 

posted @ 2015-10-17 15:58  无天666  阅读(265)  评论(0编辑  收藏  举报