Android常用高级组件之下拉列表控件


1.Spinner类简介

   Spinner位于android:widget包下,每次只显示用户选中的元素,当用户再次点击是,会弹出选择列表供用户选择而选择列表中的元素同样来自适配器,它的继承关系如下:

Java.lang.Object/Adroid.view.View/android.ViewGoup/android.widget.AdapterView/android.widget.AbsSpinner/android.widget.Spinner

2下拉列表使用案例

a.创建项目,并准备图片资源,将图片资源存放到项目目录中的res/drawable-mdpi文件夹下;

 

b.准备字符串资源;

c.准备颜色资源,在res/values目录下创建color.xml文件,并写入代码;

 

d.开发该案例的布局文件,即main.xml,如下;

 

e.开发案例的主要逻辑代码,如下:

package com.example.sample_5_9;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TextView;

public class Sample_5_9 extends Activity 
{
    final static int WRAP_CONTENT = -2;//表示WRAP_CONTETN    的常量
    int[] drawableIds = {R.drawable.football, R.drawable.basketball, R.drawable.volleyball};//所有资源文件
    int[] msgIds = {R.string.zq, R.string.lq,R.string.pq};//所有资源字符串
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Spinner sp = (Spinner)this.findViewById(R.id.Spinner01);//初始化Spinner
        BaseAdapter ba = new BaseAdapter()
        {
            public int getCount()
            {
                return 3;
            }
            public Object getItem(int position)
            {
                return null;
            }
            public long getItemId(int position)
            {
                return 0;
            }
            @Override
            public View getView(int position, View convertView, ViewGroup parent)
            {//动态生成每个下拉项对应的View,每个下拉项View由LinearLayout中包含一个ImageView及一个TextView构成
                LinearLayout ll = new LinearLayout(Sample_5_9.this);
                ll.setOrientation(LinearLayout.HORIZONTAL);//设置朝向
                ImageView ii = new ImageView(Sample_5_9.this);
                ii.setImageDrawable(getResources().getDrawable(drawableIds[position]));//设置图片
                ll.addView(ii);//将ImageView添加到LinearLayout中
                TextView tv = new TextView(Sample_5_9.this);
                tv.setText(" "+ getResources().getText(msgIds[position]));//设置内容
                tv.setTextSize(24);
                tv.setTextColor(R.color.black);
                ll.addView(tv);
                return ll;
            }
        };
        sp.setAdapter(ba);
       sp.setOnItemSelectedListener(
               new OnItemSelectedListener()
            {
                public void onItemSelected(AdapterView<?> arg0, View arg1,
                        int arg2, long arg3)
                {
                    TextView tv = (TextView)findViewById(R.id.TextView01);
                    LinearLayout ll = (LinearLayout)arg1;
                    TextView tvn = (TextView)ll.getChildAt(1);
StringBuilder sb = new StringBuilder();
sb.append(getResources().getText(R.string.ys)); sb.append(":"); sb.append(tvn.getText()); tv.setText(sb.toString()); } public void onNothingSelected(AdapterView<?> arg0) { } }); } public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } }

f.程序运行结果如下:

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM