当前位置:首页 > 谈天说地

Android Spinner和GridView组件的使用示例

34资源网2022-03-31582

一. 概述:

        spinner是我们所熟悉的下拉框列表。与listview类似,我们必须为spinner对象指定一个adapter。我们从spinner的简单用法开始讲述。

二. 实现

mainactivity.java

package com.example.demo03_29;
 
import androidx.appcompat.app.appcompatactivity;
 
import android.os.bundle;
import android.view.view;
import android.widget.adapter;
import android.widget.adapterview;
import android.widget.arrayadapter;
import android.widget.spinner;
import android.widget.textview;
 
public class mainactivity extends appcompatactivity implements adapterview.onitemselectedlistener {
    textview choice;
    arrayadapter<charsequence> adapter;
    @override
    protected void oncreate(bundle savedinstancestate) {
        super.oncreate(savedinstancestate);
        setcontentview(r.layout.activity_main);
 
        choice=(textview) this.findviewbyid(r.id.choice);
 
        spinner spinner=(spinner)this.findviewbyid(r.id.sp1);
        adapter=arrayadapter.createfromresource(this, r.array.habit,
                android.r.layout.simple_spinner_item);
        adapter.setdropdownviewresource(android.r.layout.simple_spinner_dropdown_item);
        spinner.setadapter(adapter);
        spinner.setonitemselectedlistener(this);
    }
 
 
    @override
    public void onitemselected(adapterview<?> adapterview, view view, int i, long l) {
        choice.settext(adapter.getitem(i));
    }
 
    @override
    public void onnothingselected(adapterview<?> adapterview) {
 
    }
}

在values包下的  string.xml

<resources>
    <string name="app_name">demo03-29</string>
<string-array name="habit">
    <item>10公里夜跑</item>
    <item>爬山</item>
    <item>游泳</item>
    <item>吃饭</item>
    <item>打代码</item>
</string-array>
</resources>

activity_main.xml 

<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".mainactivity">
 
    <linearlayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <textview
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="你喜欢的运动"/>
        <spinner
            android:id="@+id/sp1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    </linearlayout>
 
    <view
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:background="#05adf8"/>
 
    <textview
        android:id="@+id/choice"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        />
</linearlayout>

sipnner_down.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="match_parent"
    android:orientation="horizontal">
 
    <imageview
        android:id="@+id/p01"
        android:layout_width="64dp"
        android:layout_height="64dp"
        />
    <linearlayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    <textview
        android:id="@+id/t1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <textview
        android:id="@+id/t2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    </linearlayout>
 
</linearlayout>

         这个布局比较简单,就是在linearlayout中放置一个linearlayout、一个分隔组件用的view和一个显示所选结果的textview。在其中嵌套的linearlayout中放置一个用于提示用的textview和下拉框spinner。

三. 美化

myadapter.java 

package com.example.demo03_29;
 
import android.content.context;
import android.view.layoutinflater;
import android.view.view;
import android.view.viewgroup;
import android.widget.arrayadapter;
import android.widget.imageview;
import android.widget.textview;
 
import androidx.annotation.nonnull;
 
public class myarrayapater extends arrayadapter {
    private layoutinflater minflater;
    string[] titles;
    string[] desc={
            "集成工具",
            "高速保存,随时存储",
            "优质资源,尽在迅雷",
            "集成开发工具",
            "学习神器"
    };
    int[] photos={r.drawable.p1,r.drawable.p2,r.drawable.p3,r.drawable.p4,r.drawable.p5};
 
    public myarrayapater(@nonnull context context, int resource, charsequence[] objects) {
        super(context, resource, objects);
 
        minflater=(layoutinflater) context.getsystemservice(context.layout_inflater_service);
        titles=context.getresources().getstringarray(r.array.habit);
    }
    @override
    public int getcount(){
        return titles.length;
    }
    @override
    public view getdropdownview(int position, view convertview, viewgroup parent){
        view v;
        v=minflater.inflate(r.layout.spinner_down,parent,false);
 
        imageview iv=(imageview)v.findviewbyid(r.id.p01);
        iv.setimageresource(photos[position]);
        textview tv01=(textview) v.findviewbyid(r.id.t1);
        tv01.settext(titles[position]);
        textview tv02=(textview) v.findviewbyid(r.id.t2);
        tv02.settext(desc[position]);
        return v;
    }
}

修改 mainactivity.java

四. gridview

       gridview以二维表格的方式显示数据,若数据比较多,该组件将提供垂直滚动条。我们用一个列子来说明gridview的使用方法。

activity_main.xml 

<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".mainactivity">
 
    <gridview
        android:id="@+id/gr1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:numcolumns="4"
        />
 
</linearlayout>

 imgeadapter.java

package com.example.demo0330;
 
import android.content.context;
import android.view.view;
import android.view.viewgroup;
import android.widget.baseadapter;
import android.widget.gridview;
import android.widget.imageview;
 
public class imageadapter extends baseadapter {
    private int[] images={
            r.drawable.p1, r.drawable.p2, r.drawable.p3, r.drawable.p4,
            r.drawable.p1, r.drawable.p2, r.drawable.p3, r.drawable.p4,
            r.drawable.p1, r.drawable.p2, r.drawable.p3, r.drawable.p4,
            r.drawable.p1, r.drawable.p2, r.drawable.p3, r.drawable.p4,
            r.drawable.p1, r.drawable.p2, r.drawable.p3, r.drawable.p4,
 
    };
    private context context;
    public imageadapter(context context){
        this.context=context;
    }
 
 
    @override
    public int getcount() {
        return images.length;
    }
 
    @override
    public object getitem(int position) {
        return images[position];
    }
 
    @override
    public long getitemid(int position) {
        return position;
    }
 
    @override
    public view getview(int position, view convertview, viewgroup parent) {
        imageview imageview;
        if (convertview==null){
            imageview=new imageview(context);
            int width= gridview.layoutparams.match_parent;
            int heght= gridview.layoutparams.match_parent;
            imageview.setlayoutparams(new viewgroup.layoutparams(width,heght));
            imageview.setscaletype(imageview.scaletype.center_inside);
        }else{
            imageview=(imageview) convertview;
        }
        imageview.setimageresource(images[position]);
        return imageview;
    }
}

mainactivity.java

package com.example.demo0330;
 
import androidx.appcompat.app.appcompatactivity;
 
import android.os.bundle;
import android.view.view;
import android.widget.adapterview;
import android.widget.gridview;
import android.widget.toast;
 
public class mainactivity extends appcompatactivity {
 
    @override
    protected void oncreate(bundle savedinstancestate) {
        super.oncreate(savedinstancestate);
        setcontentview(r.layout.activity_main);
 
        gridview gridview=(gridview) findviewbyid(r.id.gr1);
        gridview.setadapter(new imageadapter(this));
        gridview.setonitemclicklistener(new adapterview.onitemclicklistener() {
            @override
            public void onitemclick(adapterview<?> adapterview, view view, int position, long l) {
                toast.maketext(mainactivity.this,"现在点击的是位置在"+(position+1)+"张照片",toast.length_long).show();
            }
        });
    }
}

效果图:

到此这篇关于android spinner和gridview组件的使用示例的文章就介绍到这了,更多相关android spinner内容请搜索萬仟网以前的文章或继续浏览下面的相关文章希望大家以后多多支持萬仟网!

看完文章,还可以扫描下面的二维码下载快手极速版领4元红包

快手极速版二维码

快手极速版新人见面礼

除了扫码领红包之外,大家还可以在快手极速版做签到,看视频,做任务,参与抽奖,邀请好友赚钱)。

邀请两个好友奖最高196元,如下图所示:

快手极速版邀请好友奖励

扫描二维码推送至手机访问。

版权声明:本文由34楼发布,如需转载请注明出处。

本文链接:https://www.34l.com/post/11465.html

分享给朋友:

相关文章

用一个仍然造句和用三个仍然造句
引流文案微信推广(微商引流推广文案模板)

引流文案微信推广(微商引流推广文案模板)

大家好啊!今天又跟大家分享小技巧啦~往下看↓↓↓ 首先说一下什么样的文案是引流型的?实际上,一句话是将公共域流量定向到您的私有域流量池。其目的是先引流然后慢慢进行信任激活变现。 在标题方面,通常有以下几种类型,今天为大家详细描述一下。 一…

为了让米粉买到好看的手机壳,雷军投了一家“潮玩工厂”

为了让米粉买到好看的手机壳,雷军投了一家“潮玩工厂”

小米团队花了几个月时间,想要找到一个能DIY打印手机壳的设备却没有找到。直到2020年底,他们在西单大悦城看到玩壳工厂。 “用户需求一直存在,早前也有不少团队尝试开发这样的设备,但都失败了。”玩壳工厂创始人CEO韩冰告诉创业邦。 如今,玩壳…

一场关于元宇宙公司之死的剧本杀

一场关于元宇宙公司之死的剧本杀

编者按:本文来自脑极体,创业邦经授权发布。 2021年,被称作元宇宙元年。这种结合了区块链、虚拟现实、增强现实多种技术的概念,据称能够提供社交、娱乐、电商多种功能。美国彭博社称,元宇宙的市场规模将在2024年将达到8000亿美元。而就在20…

柳夜熙一夜暴粉,顶级品牌悉数入局,元宇宙的热点不好蹭

柳夜熙一夜暴粉,顶级品牌悉数入局,元宇宙的热点不好蹭

图源:摄图网 编者按:本文来自微信公众号深响(ID:deep-echo),作者:郭瑞灵,创业邦经授权转载 毋庸置疑,“元宇宙”绝对是当下最火的概念。 海外,Facebook已经改名Meta并宣布从社交媒体转型为“元宇宙”公司,“元宇宙”概念…

视频号灰度测试购物车功能,微信要扛起腾讯电商大旗了?

视频号灰度测试购物车功能,微信要扛起腾讯电商大旗了?

图源:摄图网 编者按:本文来自微信公众号小谦笔记(ID:xiaoqianshuo),创业邦经授权转载 据自媒体百准报道,除了直播,微信视频号目前正在灰度测试短视频购物车功能,这被视为微信加码电商业务的一大跨步。 早在2014年,腾讯就在微信…