spinner和适配器模式

spinner相当于html表单中的select下拉列表。

------------
|第一种方式|
------------
在string.xml中添加一个数组spinner_data:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="spinner_data">
<item >北京</item>
<item >湖南</item>
<item >湖北</item>
</string-array>
</resources>

拖拽一个spinner:
<Spinner
android:id="@+id/spinner1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/spinner_data"
android:spinnerMode="dialog"

/>

<!-- entries 显示spinner当中的数据项
spinnerMode="dropdown"是默认值下拉列表,spinnerMode="dialog"是以对话框的形式显示--!>
------------
|第二种方式|
------------
BaseAdapter就Android应用程序中经常用到的基础数据适配器,它的主要用途是将一组数据传到像ListView、Spinner、Gallery、GridView等UI显示组件,它是自动继承接口类Adapter。
假如要往spinner中添加string[]或List。
--------------------------------------------------------------------------------------------------------------
a)string[]
在MainActivity主类中定义一个字符串数组:
private String[] str = new String[] {
  "山东","山西","北京"
};

定义一个继承BaseAdapter的类:
private class MyAdapter extends BaseAdapter {

@Override
public int getCount() {
  // TODO Auto-generated method stub
  return str.length;//重要方法
}

@Override
public Object getItem(int arg0) {
  // TODO Auto-generated method stub
  return null;
}

@Override
public long getItemId(int arg0) {
  // TODO Auto-generated method stub
  return 0;
}

@Override
public View getView(int position, View view, ViewGroup group) {//重要方法
  // TODO Auto-generated method stub
  //str.length多长此方法就执行几次
  TextView textView = new TextView(MainActivity.this);
  textView.setText(str[position]);
  return textView;
}

}

在onCreate方法中:
Spinner spinner = (Spinner) findViewById(R.id.spinner1);
spinner.setAdapter(new MyAdapter());
--------------------------------------------------------------------------------------------------------------
b)List
在MainActivity主类中定义一个List:
private List list = new ArrayList();

并在onCreate方法中添加内容:
list.add("上海");
list.add("天津");
list.add("浙江");

MyAdapter类则只需要修改几处即可:
1. public int getCount() {

  return list.size();
}

2. public View getView(int position, View view, ViewGroup group) {

  TextView textView = new TextView(MainActivity.this);
  textView.setText((CharSequence) list.get(position));
  return textView;
}

3.还可以继续给spinner添加事件OnItemSelectedListener:
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub

  Toast.makeText(MainActivity.this, (CharSequence) list.get(position), 0).show();

}

@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub

}

});

--------------------------------------------------------------------------------------------------------------

时间: 2024-08-04 14:28:26

spinner和适配器模式的相关文章

20 UI_常用组件之 Spinner与适配器模式

UI_常用组件之 Spinner(下拉列表)与适配器模式 <Spinner         android:id="@+id/spinner1"         android:layout_width="142dp"         android:layout_height="wrap_content"          android:entries="@array/spinner_data"         an

Android开发之适配器模式初探

我们在开发Android的时候经常通过Adapter把数据和UI对象连接在一起,spinner.ListView之类的控件都可以用适配器来自定义其组建,使其更加丰富.适配器模式是将两个不兼容的类纠合在一起使用,属于结构型,需要有Adaptee(被适配者)和Adaptor(适配器)两个身份.简单的来说,就是你有一个机器人是只会踢足球的,另一个机器人只会打篮球的,然后你想有让他既会踢足球又会打篮球,那他的芯片里要将这两种方法都集合在一起,可我们又不知道原来的踢足球和打篮球的方法是怎么写的,也不想改啊

Happy 设计模式之适配器模式(JAVA)

设计模式-适配器模式 适配器模式定义 适配器模式,将一个类的的接口转换成客户或者产品希望的接口形式,就是原本不兼容或者甚至不相干的接口不能一起工作的接口一起工作,完成需求或者客户的需求. 适配器模式的使用场景 1.当你使用一个已经存在的类,而他的接口不符合你的需求. 2.你想要创建一个复用的类,该类可以与其相关的类或者不可见的类协同工作. 适配器角色 Target:目标接口 TargetImpl:目标实现类 Adapter:适配器 Adaptee:被适配者 代码解析: package com.d

UI组件之AdapterView及其子类(三)Spinner控件具体解释

Spinner提供了从一个数据集合中高速选择一项值的办法. 默认情况下Spinner显示的是当前选择的值.点击Spinner会弹出一个包括全部可选值的dropdown菜单或者一个dialog对话框,从该菜单中能够为Spinner选择一个新值. 这篇文章中我将讨论 1.Spinner的基本使用方法 2.Spinner的xml属性 3.设置Spinner的Adapter (antries属性,arrayadapter 和自己定义BaseAdapter) 最简单的Sipnner使用方法是使用spinn

Javascript设计模式理论与实战:适配器模式

有的时候在开发过程中,我们会发现,客户端需要的接口和提供的接口发生不兼容的问题.由于特殊的原因我们无法修改客户端接口.在这种情况下,我们需要适配现有接口和不兼容的类,这就要提到适配器模式.通过适配器,我们可以在不用修改旧代码的情况下也能使用它们,这就是适配器的能力. 基本理论 适配器模式:将一个接口转换成客户端需要的接口而不需要去修改客户端代码,使得不兼容的代码可以一起工作. 适配器主要有3个角色组成:(1)客户端:调用接口的类(2)适配器:用来连接客户端接口和提供服务的接口的类(3)适配者:提

适配器模式开发

Adapter模式也叫适配器模式,是构造型模式之一,通过Adapter模式可以改变已有类(或外部类)的接口形式. 在大规模的系统开发过程中,我们常常碰到诸如以下这些情况:我们需要实现某些功能,这些功能已有还不太成熟的一个或多个外部组件, 如果我们自己重新开发这些功能会花费大量时间:所以很多情况下会选择先暂时使用外部组件, 以后再考虑随时替换.避免代码大面积修改Adapter模式就是针对这种类似需求而提出来的.Adapter模式通过定义一个新的接口(对要实现功能加以抽象),和一个实现该接口的Ada

【转】Android:控件Spinner实现下拉列表

原文网址:http://www.cnblogs.com/tinyphp/p/3858920.html 在Web开发中,HTML提供了下拉列表的实现,就是使用<select>元素实现一个下拉列表,在其中每个下拉列表项使用<option>表示即可.这是在Web开发中一个必不可少的交互性组件,而在Android中的对应实现就是Spinner. 方法一: 以资源方式,静态展示 Spinner 选项: <Spinner android:layout_width="match_

7 结构型模式-----适配器模式

模式动机:有时软件复用的一个难题就是接口的不兼容性,适配器的职责就是为客户提供兼容的适配者接口,使得客户只需访问一类接口就可以调用合适的适配者,而其中的适配细节则有适配器来完成. 模式定义(Adapter Pattern):将一个接口转换为用户期望的接口,使得那些接口不兼容的类可以一起工作. 模式结构图: 模式代码: bt_适配器模式.h: 1 #ifndef AP_H 2 #define AP_H 3 #include <iostream> 4 5 using namespace std;

适配器模式(Adapter)

1.定义: 适配器模式是将一个类的接口转换成客户端希望的另一个接口,适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 结构与说明: Client:客户端,调用自己需要的领域接口Target. Target:定义客户端需要的跟特定领域相关的接口. Adaptee:已经存在的接口,但与客户端需要的特定领域接口不一致,需要被适配. Adapter:适配器,把Adaptee适配成Client需要的Target. 2.代码示例 (1)已经存在的应用接口,需要被适配的类Adaptee 1