Android-高级控件-下拉列表(Spinner)&列表视图(ListView)

Posted ML.star

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android-高级控件-下拉列表(Spinner)&列表视图(ListView)相关的知识,希望对你有一定的参考价值。

Spinner

语法

 <Spinner

         android:id="@+id/ID号"

         android:layout_width="wrap_content"

          android:layout_height="wrap_content"

          android:entries=“@array/数组名称"

  ......

    />

 android:entries 

选项,用于指定列表项,若在布局文件中不指定该属性,可在Java代码中通过为其指定适配器的方式指定

有两种为其添加列表项的方式

通过XML文件添加

 在values目录下,新建一个数组资源文件array.xml

<resources>
    		<string-array name="zhuanye">
        		<item>计算机科学与技术</item>
    			<item>软件工程</item>
        		<item>网络工程</item>
        		<item>物联网工程</item>
        		</string-array>
	</resources>

 引用

<Spinner
        android:id="@+id/major"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:entries="@array/zhuanye" />

通过Java代码添加

String[] city=new String[]"北京", "上海", "天津" , "重庆" , "广州" ;
Spinner citysp=(Spinner)findViewById(R.id.sp_city);
ArrayAdapter<String> spadapter=new 
ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,city);
citysp.SetAdapter(spadapter);

练习题目

 (1)界面构成:

①5个文本框用于显示提示信息“姓名:”、“年龄”、“专业”、“学历”、“爱好”;

②2个编辑框分别用于接收学生的姓名和年龄;

③3个单选按钮用于专业选择(计算机科学与技术、软件工程、网络工程);

④1个Spinner用于学历选择,使用数组资源获取列表项(高中、本科、硕士研究生、博士研究生、其他);

⑤n个复选框用于爱好选择(n>=3);

⑥3个普通按钮,文本分别显示为“录入”、“重置”、“显示”;

⑦1个ListView,用于显示录入的所有学生信息。

(2)程序功能:

单击“录入”按钮,将用户输入和选择的各项信息写入数组;

单击“重置”按钮,清空用户输入的信息;

③单击“显示”按钮,将所有录入的学生信息在ListView中显示。

项目结构

布局

布局预览

activity_main.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="vertical" >


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:height="50px"
            android:text="   姓 名 : "
            />
        <EditText
            android:id="@+id/et_name"
            android:layout_width="300px"
            android:layout_height="wrap_content"
            android:singleLine="true"
            android:hint="请输入姓名"
            />

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:height="50px"
            android:text="   年 龄 : "
            />
        <EditText
            android:id="@+id/et_age"
            android:layout_width="300px"
            android:layout_height="wrap_content"
            android:inputType="text"
            android:hint="请输入年龄"
            />

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:height="50px"
            android:text="   专 业 : "
            />
        <RadioGroup
            android:id="@+id/radioGroup1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            >
            <RadioButton
                android:id="@+id/rb1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="计算机科学与技术"
                />
            <RadioButton
                android:id="@+id/rb2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="软件工程"
                />
            <RadioButton
                android:id="@+id/rb3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="网络工程"
                />


        </RadioGroup>
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:height="50px"
            android:text="   学 历 : "
            />
        <Spinner
            android:id="@+id/edu"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:entries="@array/xueli" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:height="50px"
            android:text="   爱 好 : "
            />
        <GridLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:columnCount="3"
            android:id="@+id/g1_hobby"
            >
            <CheckBox
                android:id="@+id/cb1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="阅读"
                />
            <CheckBox
                android:id="@+id/cb2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="旅游"
                />
            <CheckBox
                android:id="@+id/cb3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="发呆"
                />
            <CheckBox
                android:id="@+id/cb4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="唱歌"
                />
            <CheckBox
                android:id="@+id/cb5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="编程"
                />
            <CheckBox
                android:id="@+id/cb6"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="运动"
                />


        </GridLayout>

    </LinearLayout>


    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center">
        <Button
            android:id="@+id/bt_login"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="录入"
            android:onClick="onClickLogin"
            />
        <Button
            android:id="@+id/bt_reset"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="重置"
            android:onClick="onClickReset"
            />
        <Button
            android:id="@+id/bt_xianshi"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="显示"

            />

    </LinearLayout>

    <ListView
        android:id="@+id/lsv1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:divider="#f00"
        android:dividerHeight="2dp"
        android:layout_gravity="center"

        />

</LinearLayout>

list_item.xml

<Te<?xml version="1.0" encoding="utf-8" ?>
<!--2.模板-->
<TextView    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:textSize="20sp"
    android:textColor="#009">

</TextView>

array.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="xueli">
        <item>高中</item>
        <item>本科</item>
        <item>硕士研究生</item>
        <item>博士研究生</item>
        <item>其它</item>
    </string-array>

</resources>

逻辑实现

MainActivity

package com.example.test;

import android.content.Context;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.GridLayout;
import android.widget.ListView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.view.View. OnClickListener;


import java.util.ArrayList;

public class MainActivity extends Activity 

    //声明
    private Context context;

    Spinner sp;
    //声明ListView对象
    ListView lsv;

    RadioGroup zy;

    EditText etname,etage;

    CheckBox cb1,cb2,cb3,cb4,cb5,cb6;
    CheckBox cb[]=new CheckBox[6];

    Button bt1,bt2,btxianshi;
    //复选按钮组
    GridLayout g1;

    String name,age,specialty,shobby,edu;
    //
    ArrayList<String> list=new ArrayList<String>();;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        context =this;

        //获取控件对象
        //登记按钮和重置按钮
        bt1 = (Button) findViewById(R.id.bt_login);
        bt2 = (Button) findViewById(R.id.bt_reset);
        btxianshi = (Button) findViewById(R.id.bt_xianshi);
        //复选框
        cb[0] = (CheckBox) findViewById(R.id.cb1);
        cb[1] = (CheckBox) findViewById(R.id.cb2);
        cb[2] = (CheckBox) findViewById(R.id.cb3);
        cb[3] = (CheckBox) findViewById(R.id.cb4);
        cb[4] = (CheckBox) findViewById(R.id.cb5);
        cb[5] = (CheckBox) findViewById(R.id.cb6);

        g1 = (GridLayout) findViewById(R.id.g1_hobby);

        etname = (EditText) findViewById(R.id.et_name);
        etage = (EditText) findViewById(R.id.et_age);


        zy = (RadioGroup) findViewById(R.id.radioGroup1);

        sp = (Spinner)findViewById(R.id.edu);

        lsv=(ListView)findViewById(R.id.lsv1);



        //登记信息
        bt1.setOnClickListener(new OnClickListener() 

            @Override
            public void onClick(View v) 
                // TODO Auto-generated method stub

                edu = sp.getSelectedItem().toString();

                shobby="";
                //
                for(int i=0;i<g1.getChildCount() ;i++) 
                    CheckBox cbs = (CheckBox) g1.getChildAt(i);
                    //判断状态
                    if(cb[i].isChecked()) 
                        shobby+=cbs.getText().toString()+"  ";
                    
                

                for(int i=0;i<zy.getChildCount();i++) 
                    RadioButton r = (RadioButton) zy.getChildAt(i);
                    if(r.isChecked()) 
                        specialty = r.getText().toString();
                    
                


                name = etname.getText().toString();
                age = etage.getText().toString();

                String s="\\n姓名:"+name+"\\n年龄:"+age+"\\n专业:"+specialty+"\\n学历:"+edu+"\\n爱好:"+shobby;

                list.add(s);





            
        );




        //重置
        bt2.setOnClickListener(new OnClickListener() 

            @Override
            public void onClick(View v) 
                // TODO Auto-generated method stub
                //清空编辑框
                etname.setText("");
                etage.setText("");
                //消除单选按钮的被选中状态
                for(int i=0;i<zy.getChildCount();i++) 
                    RadioButton r = (RadioButton) zy.getChildAt(i);
                    if(r.isChecked()) 
                        r.setChecked(false);
                    
                
                //清除复选按钮的被选中状态
                for(int i=0;i<g1.getChildCount() ;i++) 
                    CheckBox cbs = (CheckBox) g1.getChildAt(i);
                    cbs.setChecked(false);
                

               lsv.setAdapter(null);
                sp.setSelection(0);

            
        );

        btxianshi.setOnClickListener(new OnClickListener() 
            @Override
            public void onClick(View view) 
                /**
                 * 从list集合中读取数据显示在文本框中
                 * 创建适配器对象
                 */
                ArrayAdapter<String> adapter =
                        new ArrayAdapter<String>(
                                MainActivity.this,
                                R.layout.list_item,
                                list);
                //关联
                lsv.setAdapter(adapter);

            
        );



    



//    @Override
//    public boolean onCreateOptionsMenu(Menu menu) 
//        // Inflate the menu; this adds items to the action bar if it is present.
//        getMenuInflater().inflate(R.menu.main, menu);
//        return true;
//    

运行

登记

显示

 重置

以上是关于Android-高级控件-下拉列表(Spinner)&列表视图(ListView)的主要内容,如果未能解决你的问题,请参考以下文章

Android 下拉列表Spinner

一起Talk Android吧(第四百四十一回:UI控件之下拉列表:Spinner一)

一起Talk Android吧(第四百四十二回:UI控件之下拉列表:Spinner二)

android 下拉列表

高级控件

android开发--Spinner