溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Android?Spinner和GridView組件怎么用

發(fā)布時(shí)間:2022-03-31 12:34:10 來(lái)源:億速云 閱讀:172 作者:小新 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細(xì)講解有關(guān)Android Spinner和GridView組件怎么用,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

一. 概述:

        Spinner是我們所熟悉的下拉框列表。與ListView類似,我們必須為Spinner對(duì)象指定一個(gè)Adapter。我們從Spinner的簡(jiǎn)單用法開始講述。

Android?Spinner和GridView組件怎么用

二. 實(shí)現(xiàn)

MainActivity.java

Android?Spinner和GridView組件怎么用

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="你喜歡的運(yùn)動(dòng)"/>
        <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>

         這個(gè)布局比較簡(jiǎn)單,就是在LinearLayout中放置一個(gè)LinearLayout、一個(gè)分隔組件用的View和一個(gè)顯示所選結(jié)果的TextView。在其中嵌套的LinearLayout中放置一個(gè)用于提示用的TextView和下拉框Spinner。

三. 美化

Android?Spinner和GridView組件怎么用

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={
            "集成工具",
            "高速保存,隨時(shí)存儲(chǔ)",
            "優(yōu)質(zhì)資源,盡在迅雷",
            "集成開發(fā)工具",
            "學(xué)習(xí)神器"
    };
    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

Android?Spinner和GridView組件怎么用

四. GridView

       GridView以二維表格的方式顯示數(shù)據(jù),若數(shù)據(jù)比較多,該組件將提供垂直滾動(dòng)條。我們用一個(gè)列子來(lái)說明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,"現(xiàn)在點(diǎn)擊的是位置在"+(position+1)+"張照片",Toast.LENGTH_LONG).show();
            }
        });
    }
}

效果圖:

Android?Spinner和GridView組件怎么用

關(guān)于“Android Spinner和GridView組件怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI