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

Android Spinner和GridView组件的使用示例

34资源网2022-03-31507

一. 概述:

        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

分享给朋友:

相关文章

现在小县城做什么创业比较好?

现在小县城做什么创业比较好?

目前在小县城做什么赚钱创业比较好呢?我相信大家都在想这个问题吧?其实小县城是一个不错的经济市场,主要看你做什么项目创业了。下面小编收集了几个项目,希望大家喜欢。…

适合普通人做的小本创业点子

适合普通人做的小本创业点子

适合普通人做的小本创业生意有什么??随着零售行业的兴起,小型超市便利店生意成为创业者首选的项目之一,主要原因在于:投入资金小、回笼快,不需要太大的现金流来支撑、一年半左右就能回本。这对于拥有一部分闲置资金,想创业的投资者来说简直是很好的创业…

现在开一家vr游戏体验馆投资创业要多少钱?

现在开一家vr游戏体验馆投资创业要多少钱?

现在开一家vr游戏体验馆投资创业要多少钱?这个涉及到的东西很多,比如你的店铺开在市区还是乡下,是开在热闹地方还是比较冷清的地方,另外还要看你的店面有多大,设备有多少台,以及其他的零零碎碎加起来,就能知道开一家vr游戏体验馆需要多少钱了。…

20句经典语录分享,​我们学会了告别,却低估了思念

20句经典语录分享,​我们学会了告别,却低估了思念

20句经典语录分享,我们学会了告别,却低估了思念,下面这些都是非常经典的语录,值得你看一下哦。…

小型电冰箱什么牌子好?现在口碑最好的冰箱推荐

小型电冰箱什么牌子好?现在口碑最好的冰箱推荐

海尔冰箱全球公认的质量很不错的冰箱,海尔冰箱优点是:微霜,制冷效果不错;节能省电,保湿效果不错;海尔冰箱是十大品牌之首,全球销量的第一梯队的佼佼者。海尔冰箱外观十分好看,海尔冰箱款式几乎都很新颖,质量好,制冷情况好,用了一段时间,制冷情况稳…

闪客快跑2背景音乐(闪客快打andylaw的微博)

闪客快跑2背景音乐(闪客快打andylaw的微博)

《疯狂跑酷》是一款LowPoly(低多边形)画风的跑酷游戏,一场突如其来的大水淹没了城市,而你在游戏中扮演一名刚下班的男子,需要从被水淹没的城市中逃出生天。…