`
keeponmoving
  • 浏览: 112495 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Andorid中的Spinner编写实例

 
阅读更多

 

Spinner在android开发中也是用的比较多的一个控件,提供了类似于Web中一个下拉列表样式的输入控件。下面先给出一个比较简单的实例,这里我们没有自己去定义下来列表的布局,而是采用android系统提供的布局。效果图如下:


android给Spinner控件提供了这样一个属性:android:entries="@array/books" 它可以指定Spinner的下拉选项,我们可以看出来它的资源是一个array数组。

layout的xml内容:

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Spinner
        android:id="@+id/my_spinner"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:entries="@array/books" />

</LinearLayout>

数组资源的xml代码:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="books">
        <item >Windows</item>
        <item >mac os</item>
        <item >ubuntu</item>
        <item >aix</item>
        <item >Linux</item>
    </string-array>
    
</resources>

  下面activity代码,

 

public class SpinnerActivity extends Activity {
	private Spinner mySpinner;
	private myOnItemSelectedListener listener;
	// 注意String[]类型的数组资源不能在UI上定义String[],而是定义一个CharSequence[]
	private CharSequence[] os;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		mySpinner = (Spinner) findViewById(R.id.my_spinner);
		listener = new myOnItemSelectedListener();
		// 定义一个CharSequence[] 去拿到String类型的数组
		os = getResources().getTextArray(R.array.books);
		mySpinner.setOnItemSelectedListener(listener);
	}

	private final class myOnItemSelectedListener implements OnItemSelectedListener {

		@Override
		public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
			Toast.makeText(getApplicationContext(), os[position], 1).show();
		}

		@Override
		public void onNothingSelected(AdapterView<?> parent) {
		}
	}
}

  这个spinner很简单的实现,在写代码的时候发现定义的数组资源在activity中要用CharSequence[]类型,没有自己去定义下拉列表的,后面将会写出一个自定义item的实例。

下面我又重新自己写了一个自定义下拉列表的Spinner,因为实际开发中一般都是要自己定义下拉item才能满足需求的,上图先看效果:

 

因为程序代码很简单,所以下面只给出下拉列表item的布局和activity代码,首先是下拉item的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/spinner_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/check"
        android:contentDescription="@string/what_description" />

    <TextView
        android:id="@+id/tv_os"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</LinearLayout>

 activity代码,这里我是采用一个继承自BaseAdapter的内部来自定义下拉item的布局的:

public class MySpinnerActivity extends Activity {
	private Spinner mySpinner;
	private myBaseAdapter adapter;
	private String[] os = new String[] { "windows", "mac os", "ubuntu", "linux", "android", "ios" };

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		mySpinner = (Spinner) findViewById(R.id.myspinner);
		adapter = new myBaseAdapter();
		//mySpinner.setBackgroundColor(android.R.color.background_light);
		mySpinner.setAdapter(adapter);
	}

	private final class myBaseAdapter extends BaseAdapter {
		private LayoutInflater mInflater;

		public myBaseAdapter() {
			super();
			mInflater = getLayoutInflater();
		}

		@Override
		public int getCount() {
			return os.length;
		}

		@Override
		public Object getItem(int position) {
			return null;
		}

		@Override
		public long getItemId(int position) {
			return position;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			View view = mInflater.inflate(R.layout.spinner_item, null);
			ImageView iv_spinner = (ImageView) view.findViewById(R.id.spinner_image);
			iv_spinner.setImageResource(R.drawable.check);
			TextView tv_os = (TextView) view.findViewById(R.id.tv_os);
			tv_os.setText(os[position]);
			return view;
		}
	}
}
 

如上N多废话,只是自己学习的总结。

 

  • 大小: 17 KB
  • 大小: 18.9 KB
分享到:
评论

相关推荐

    Android使用 Spinner控件实现下拉框功能

    Android Spinner控件是 Android 系统中的一种控件,用于实现下拉框功能。通过使用 Spinner 控件,我们可以在 Android 应用程序中实现下拉框的效果。下面我们将通过实例代码来介绍如何使用 Spinner 控件实现下拉框...

    Android学习笔记九:基本视图组件:Spinner

    要处理用户在Spinner中做出的选择,可以通过实现`OnItemSelectedListener`接口并在`onItemSelected()`方法中编写处理逻辑: ```java mySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener...

    android Spinner+sqlite 三级联动

    1. **Spinner**:是Android中用于显示下拉列表的一个控件。用户可以通过点击Spinner来显示一个包含多个选项的列表,并从中选择一项。 2. **SQLite**:是一个轻量级的关系型数据库管理系统,非常适合移动设备。它可以...

    Android高级应用源码-自己做的安卓开发关于两个spinner联动的实例.zip

    在这个实例中,可能使用了ArrayAdapter,因为通常级联选择的数据会存储在内存中的数组或列表里。 其次,两个Spinner的联动需要监听第一个Spinner的选择事件。当第一个Spinner的选中项发生变化时,根据选中的值去...

    android开发实例大全_王东华

    实例122: 在手机中编写一个翻译软件 458 实例123: 生成一个二维码 460 实例124: 使用Google Chart API生成二 维码 463 第11章 平板应用 469 实例125: 开发一个音乐播放器 469 实例126: 开发一个在线天气播报...

    android studio实现简单考试应用程序实例代码详解

    在本文中,我们将介绍如何使用Android Studio实现一个简单的考试应用程序实例代码。 knowledge point 1: Android Studio简介 Android Studio是Google推出的一个集成开发环境(IDE),它提供了一个功能强大且灵活...

    Android实例开发完全手册

    - **实例说明:** 介绍了如何在Windows系统中安装Android SDK。 - **具体实现:** 下载Android SDK安装包并进行安装。 - **特别提醒:** 注意不同版本的SDK可能会影响应用程序的兼容性。 - **1.4 在Windows环境...

    Android实现省市区三级联动效果 Spinner

    3. 绑定数据:在Activity或Fragment中,实例化Spinner并设置适配器。通过`setAdapter(AreaAdapter)`方法将适配器绑定到Spinner上,然后通过适配器的`addAll(Area[] areas)`方法加载数据。 4. 处理联动逻辑:在`...

    android 下拉列表(Spinner)的学习与应用.doc

    在Android开发中,Spinner是用于创建下拉列表的控件,它允许用户在一组预定义的选项中进行选择。在本文档中,我们将探讨如何学习和应用Spinner控件。 首先,创建一个新的Android工程是所有操作的基础。新建工程后,...

    安卓QQ相关相关-Android实现仿QQ登录可编辑下拉框自定义spinner.rar

    这个“安卓QQ相关相关-Android实现仿QQ登录可编辑下拉框自定义spinner.rar”压缩包文件就是一个实例,展示了如何在Android应用中创建一个类似于QQ登录界面的可编辑下拉框,即自定义Spinner。以下将详细讲解实现此类...

    Android开发实例大全.pdf

    这份《Android开发实例大全》提供了丰富的示例和教学案例,覆盖了Android开发中的UI布局设计、控件使用、自动化服务、数据存储、电话短信处理和图形图像处理等多个方面。通过阅读和实践这些实例,开发者可以更好地...

    07-Spinner.

    - 提到的代码是基于Android 2.2(API级别8)编写的,需要注意的是,某些API可能在较新的Android版本中有变化或已弃用,因此在更新版本的环境中需要进行适配。 6. **资源文件**: - 布局文件(如 `main.xml`)中应...

    android控件开发实例

    在实例中,你可能会遇到如何动态加载布局、如何响应用户输入、如何处理触摸事件以及如何更新UI等内容。这些实例涵盖了Android控件的基本使用,可以帮助开发者快速掌握Android界面设计。 此外,通过标签"控件代码...

    android应用案例开发大全-源代码

    《Android应用案例开发大全》是一本深入探讨Android应用程序开发的实战型书籍,其源代码提供了丰富的实例,旨在帮助开发者从实践中学习和理解Android开发的核心概念和技术。这些源代码覆盖了从基础到高级的各种应用...

    android JUnit demo

    在Android的测试框架中,JUnit需要与`Instrumentation`一起使用,后者可以控制设备或模拟器上的实际应用实例,使得测试能够访问和操作真实的Android组件。`@UiThreadTest` 和 `@UiThreadTest` 注解可能被用来标识...

    利用Android编写的汇率转换代码

    在Android平台上进行应用程序开发时,有时我们需要实现货币转换的功能,比如在本例中,我们要讨论的是人民币(CNY)与美元(USD)之间的汇率转换。这个功能对于跨境电商、旅游应用或者金融类应用来说非常实用。下面...

    Android中的设计模式

    在Android开发中,`BaseAdapter`用于将数据源适配到像`ListView`或`Spinner`这样的视图组件,使得数据能够正确展示。 7. **合成模式**: 合成模式将对象组合成树形结构,以表示部分-整体层次结构。在Android中,`...

    Android开发案例驱动教程 配套代码

    3.2 Android中的组件介绍 22 3.3 使用Android SDK帮助 23 3.3.1 Android SDK API文档 23 3.3.2 Android SDK开发指南 24 3.3.3 Android SDK samples 24 3.4 使用DDMS帮助调试程序 26 3.4.1 启动DDMS 26 3.4.2 ...

    Android Studio如何获取SQLite数据并显示到ListView上

    在Android Studio的布局编辑器中,你可以直接将ListView拖放到设计视图中,或者手动编写XML代码。例如: ```xml android:id="@+id/lv_expense" style="@style/Animation.AppCompat.DropDownUp" android:layout_...

    Android下拉菜单控件

    5. 使用封装类:在实际应用中,只需要实例化我们的`PullDownMenu`类,调用其提供的方法即可快速构建下拉菜单,大大简化了代码编写过程。 在提供的`pulldownmenu`文件夹中,可能包含了封装下拉菜单控件的相关源码,...

Global site tag (gtag.js) - Google Analytics