GridView/Spinner简单用法

本文详细介绍了Android中GridView和Spinner的使用方法,包括布局配置、适配器设置及事件监听等关键步骤。通过示例代码展示了如何创建具有图片和文本项的网格视图和下拉选择器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

两者用法差不多,所以放在一起
--------------------------------------------------------------------------

更好更全的GridView介绍http://blog.youkuaiyun.com/zhangdongxuan/article/details/46924211
---------------------------------------------------------------------------------------------------------------

一、GrideView介绍

1、activity_main.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">
    <GridView
        android:id="@+id/grid_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:numColumns="3"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"/>
</LinearLayout>

GridView的方法注解说明:

[xml]  view plain  copy
  1. <!--  
  2.     GridView的宽度和高度  
  3.     //每一列的宽度  
  4.     android:columnWidth="90dp"  
  5.     //每一行能显示出几列,auto_fit自动设置,也可以指定列数  
  6.     android:numColumns="auto_fit"  
  7.     //水平和竖直方向上的间距  
  8.     android:verticalSpacing="10dp"  
  9.     android:horizontalSpacing="10dp"  
  10.       
  11.     //图片的模式  
  12.     android:stretchMode="columnWidth"  
  13.     //对齐方式  
  14.     android:gravity="center"/>-->  

2、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="120dp"
    android:layout_height="120dp"
    android:paddingTop="20dp">

    <ImageView
        android:id="@+id/image_view"
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:scaleType="centerCrop"
        android:layout_gravity="center_horizontal"/>
    <TextView
        android:id="@+id/text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"/>
</LinearLayout>


3、ActivityMain

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener{
    GridView gridView;
    Map<String,Object> map;
    List<Map<String,Object>> list=new ArrayList<Map<String,Object>>();
    //网格中图片的资源地址
    int drawable[]=new int[]{R.drawable.ic_menu_call,R.drawable.ic_menu_camera,
                                R.drawable.ic_menu_cc_am,R.drawable.ic_menu_crop,
                                R.drawable.ic_menu_delete,R.drawable.ic_menu_gallery,
                                R.drawable.ic_menu_home,R.drawable.ic_menu_month,
                                R.drawable.ic_menu_my_calendar};
    //网格中文本内容
    String text[]=new String[]{"CALL","CAMERA","AM","CROP","DELETE","GALLERY","HOME","MONTH",
            "CALENDAR1"};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        gridView=(GridView) findViewById(R.id.grid_view);
        //SimpleAdapter适配器
        //String[]必须与下文的map中的key值相一致
        //int[]必须与item.xml中的ImageView和TextView的id一致
        SimpleAdapter adapter=new SimpleAdapter(MainActivity.this,getView(),R.layout.test,
                new String[]{"imageview","textview1"},new int[]{R.id.image_view,R.id.text_view});
        gridView.setAdapter(adapter);
        gridView.setOnItemClickListener(this);
    }
    public List getView(){
        for (int i=0;i<drawable.length;i++){
            map=new HashMap<String, Object>();  //必须每个创建一个map,否则所有网格内容一样
            map.put("imageview",drawable[i]);
            map.put("textview1",text[i]);
            list.add(map);
        }
        return list;
    }
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Toast.makeText(MainActivity.this,id+text[position],Toast.LENGTH_SHORT).show();
    }
}


二、Spinner介绍

1、activity_main.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">
    <Spinner
        android:id="@+id/spinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:verticalScrollbarPosition="right"
        android:dropDownVerticalOffset="25dp"/>
</LinearLayout>
常用属性:
	<!--对话框标题:dialog上的title-->
        android:prompt="@string/title"/>
        <!--下拉形式:dialog或者dropDown-->
        android:spinnerMode="dropDown"
        <!--垂直偏移量:如果为dropDown,则为dropDown上下偏移的距离-->
        android:dropDownVerticalOffset="25dp"
        <!--水平偏移量:如果为dropDown,则为dropDown左右偏移的距离-->
        android:dropDownVerticalOffset="25dp"

2、spinner_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <ImageView
        android:id="@+id/image_view11"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scaleType="centerCrop"
        android:layout_gravity="center_horizontal"/>
    <TextView
        android:id="@+id/text_view11"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"/>
</LinearLayout>

3、ActivityMain

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener{
    Spinner spinner;
    Map<String,Object> map;
    List<Map<String,Object>> list=new ArrayList<Map<String,Object>>();
    //网格中图片的资源地址
    int drawable[]=new int[]{R.drawable.ic_menu_call,R.drawable.ic_menu_camera,
                                R.drawable.ic_menu_cc_am,R.drawable.ic_menu_crop,
                                R.drawable.ic_menu_delete,R.drawable.ic_menu_gallery,
                                R.drawable.ic_menu_home,R.drawable.ic_menu_month,
                                R.drawable.ic_menu_my_calendar};
    //网格中文本内容
    String text[]=new String[]{"CALL","CAMERA","AM","CROP","DELETE","GALLERY","HOME","MONTH",
            "CALENDAR1"};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        spinner= (Spinner) findViewById(R.id.spinner);

        //方法一:适用于有图片
        //SimpleAdapter适配器
        //String[]必须与下文的map中的key值相一致
        //int[]必须与item.xml中的ImageView和TextView的id一致
        SimpleAdapter adapter1=new SimpleAdapter(this,getView(),R.layout.spinner_item,
                new String[]{"imageview","textview1"},new int[]{R.id.image_view11,R.id.text_view11});

        //方法二:适用于没有图片
       /*List<String> list1=new ArrayList<String>();
        for (int i=0;i<text.length;i++){
            list1.add(text[i]);
        }
        ArrayAdapter adapter=new ArrayAdapter(this,R.layout.support_simple_spinner_dropdown_item,list1);*/
        
        spinner.setAdapter(adapter1);
        spinner.setOnItemSelectedListener(this);
    }
    public List getView(){
        for (int i=0;i<drawable.length;i++){
            map=new HashMap<String, Object>();  //必须每个创建一个map,否则所有网格内容一样
            map.put("imageview",drawable[i]);
            map.put("textview1",text[i]);
            list.add(map);
        }
        return list;
    }
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        String title=((Map)spinner.getItemAtPosition(position)).get("textview1").toString();//方法一的
        //String title=(spinner.getItemAtPosition(position)).toString(); //方法二的
        Toast.makeText(this,title,Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {

    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值