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;
    }
复制代码

 


本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/4887633.html,如需转载请自行联系原作者
相关文章
|
8月前
|
Android开发
Android 分享机顶盒项目的封装类《GridView》(二)(转)
Android 分享机顶盒项目的封装类《GridView》(二)(转)
51 2
|
7月前
|
API Android开发 开发者
`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView
【6月更文挑战第26天】`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView。它提供高效的数据视图复用,优化的布局管理,支持多种布局(如线性、网格),并解耦数据、适配器和视图。RecyclerView的灵活性、性能(如局部刷新和动画支持)和扩展性使其成为现代Android开发的首选,特别是在处理大规模数据集时。
77 2
|
7月前
|
前端开发 API Android开发
26. 【Android教程】网格视图 GridView
26. 【Android教程】网格视图 GridView
102 2
|
8月前
|
XML Java Android开发
Android 分享机顶盒项目的封装类《GridView》(三)(转)
Android 分享机顶盒项目的封装类《GridView》(三)(转)
54 2
|
8月前
|
Android开发
Android教程之Android 用户界面-表格视图(GridView)
Android教程之Android 用户界面-表格视图(GridView)
59 1
|
Android开发
解决安卓GridView的横向滚动问题
解决安卓GridView的横向滚动问题
160 0
|
Android开发
安卓GridView的简单使用
安卓GridView的简单使用
179 0
|
Android开发
Android自定义ListView和GridView解决滑动冲突和显示不全
Android自定义ListView和GridView解决滑动冲突和显示不全
176 0
|
Android开发
Android: 解决GridView、ListView在ScrollView中出现冲突的问题
Android: 解决GridView、ListView在ScrollView中出现冲突的问题
331 0