widget(4、spinner)

Spinner 是android下的一个下拉框控件,可以支持多级,通常定义如下:

<Spinner
     android:id="@+id/spinner1"
     android:layout_width="match_parent"
     android:layout_height="wrap_content" />

Spinner与ListView类似,都是采用适配器的方法关联数据,例如:

//定义一个数据
buffer = new ArrayList<String>();
buffer.add("条目1");
buffer.add("条目2");
buffer.add("条目3");

定义一个适配器,这里采用基本适配器,默认实现四个方法,如下:

private BaseAdapter adapter = new BaseAdapter(){

    @Override
    public int getCount() {
        return buffer.size();//数据大小
    }

    @Override
    public Object getItem(int arg0) {
        return buffer.get(arg0);//某一个位置的数据,对应一个item
    }

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) { //绘制展示部分
        LinearLayout ll = new LinearLayout(MainActivity.this);
        ll.setOrientation(LinearLayout.HORIZONTAL);
        TextView tv     = new TextView(MainActivity.this);
        tv.setText(buffer.get(position));
        ll.addView(tv);
        return ll;
    }
};

之后配置适配器:

spinner.setAdapter(adapter);

在Spinner中有两个常用API:

  • 一个是某一个Item 被选中的事件
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
    LinearLayout ll = (LinearLayout) arg1;
    TextView tv      = (TextView) ll.getChildAt(0);
    Toast toast = new Toast(MainActivity.this);
    toast = Toast.makeText(getApplicationContext(),
     tv.getText(), Toast.LENGTH_SHORT);
    toast.show();
}

此处:arg0对应position,arg3对应id(即adapter里getItemId的值,而非视图ID)

  • 数据刷新时更新视图
buffer.add("条目4");
buffer.add("条目5");
adapter.notifyDataSetChanged();//触发更新视图控件
时间: 2024-10-07 16:20:57

widget(4、spinner)的相关文章

android中RadioGroup、RadioButton、Spinner、EditText用法详解(含示例截图和源代码)

为了保护版权.尊重原创,转载请注明出处:http://blog.csdn.net/u013149325/article/details/43237757,谢谢! 今天在项目中用到了android中常用的RadioGroup.RadioButton.Spinner.EditText等控件,在此介绍一下它们的用法,希望对需要的朋友有帮助. 一.RadioGroup和RadioButton的使用 RadioButton就是我们常见的单选按钮,一个RadioGroup可以包含多个单选按钮,但是每次只能选

Android常用控件之AutoCompleteTextView、Spinner

概述 1.AutoCompleteTextView:相对于普通的TextView,AutoCompleteTextView的特点是可以自动提示文本,它可以通过SetAdapter()方法加载适配器. 2.Spinner:一种下拉列表. 知识内容 AutoCompletedTextView 布局文件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="

android&quot;百码&quot;1——CheckBox、Spinner搭配使用

时间:2015-06-13,14年毕业到现在,工作也快一年了,虽然在这一年里都是在从事android开发方面的工作,期间也学到了很多东西,对这个行业也有了更深入的了解,对很多基础知识点也得到了巩固和提升,对未接触过的网络通讯也有了一定的接触与把握,总体来说,这一年里,有多得,成长也是挺明显的.但距离一年前给自己定的目标(中级工程师)还有一定的距离,还没有能力完成这样的一个蜕变,因此这段时间都在努力去提升自己的开发技能,前几天还考虑过去培训机构接受系统的学习,但听取了前辈们的建议,他们觉着培训机构

View(视图)——AutoCompleteTextView 、Spinner和消息提示

一.AutoCompleteTextView 自动提示文本输入框 1.属性:不区分大小写. 2.ArrayAdapter  适配器 数据源是String[ ]或集合,保存要提示的文本:layout文件. 3.completionThreshold:设置提示需要的最少字符数,默认是2. 二.Spinner 下拉列表 1.ArrayAdapter  适配器 数据源是String[ ]或集合,保存要提示的文本:layout文件. 2.监听器   AdapterView.OnItemSelectedLi

View(视图)——AutoCompleteTextView、Spinner

AutoCompleteTextView 一.自动提示文本输入框且不区分大小写 二.适配器ArrayAdapter 1.数据源是String[ ]或集合,保存要提示的文本 2.layout文件 三.completionThreshold 1.设置提示需要的最小字符数 2.默认是2 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://s

Android——AutoCompleteTextView、Spinner和消息提示

layout文件: 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools="http://schemas.android.com/tools" 4 android:layout_width="ma

Android之Socket通信、List加载更多、Spinner下拉列表

Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户端向服务器发送请求后,服务器端才能向客户端返回数据.而Socket通信则是在双方建立起连接后就可以直接进行数据的传输,在连接时可实现信息的主动推送,而不需要每次由客户端想服务器发送请求. 那么,什么是socket?Socket又称套接字,在程序内部提供了与外界通信的端口,即端口通信.通过建立socket连接,可为通信双方的数

widget(7、dialog)

dialog是android的对话框控件,包括: 警告对话框:AlertDialog 进度对话框:ProgressDialog 日期选择对话框:DatePickerDialog 时间选择对话框:TimePickerDialog 自定义对话框:从Dialog继承 通过AlertDialog,我们可以实现普通式.列表式及自定义等.下面给出两个典型例子: 普通式: AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.th

widget(8、ProgressBar)

ProgressBar为进度条,在andoird中有长条形.圆形等,用以呈现事件进度.主要定义如下: <ProgressBar android:id="@+id/progressBar1" style="?android:attr/progressBarStyleHorizontal" android:layout_width="fill_parent" android:layout_height="wrap_content&qu