高级UI设计之列表

Spinner下拉列表

Android提供了两种常用的列表式组件:ListView和Spinner。ListView表示列表选择组件,Spinner表示下拉列表选择组件。
Spinner即下拉列表框,它提供了从一个数据集合中快速选择一项值的办法,默认情况下Spinner显示的是当前选择的值,点击Spinner会弹出一个包含所有可选值的dropdown菜单,从该菜单中可以为Spinner选择一个新值。它是ViewGroup的间接子类,因此可以作为容器使用。
在这里插入图片描述

Spinner常用属性

在这里插入图片描述

如何使用Spinner?

在布局文件中定义控件
在Activity中引用该控件
创建一个适配器(ArrayAdapter)为Spinner控件提供数据
设置ArrayAdapter
为Spinner控件创建监听器
绑定监听器
在这里插入图片描述

Step1 :Spinner的定义

在布局文件中定义控件,代码如下:

<Spinner 
     android:id="@+id/sp"
     android:layoutheight="wrap_content"
     android:layout_width="match_parent"/>

在java中定义对象:
Spinner spin

Step2 Spinner控件的引用

spin=(Spinner) this. findViewByld(R.id.sp);

Step3 Spinner的数据供给(使用适配器)

适配器是连接控件与数据的桥梁,几种常用的Adapter:
Array Adapter:数组适配器,是最简单的Adapter,适用于列表项中单一文本的情况;
SimpleAdapter:每一个列表项中可以含有不同的子控件;
SimpleCursorAdapter:数据源为数据库;
在这里插入图片描述

Spinner的重要用法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ArrayAdapter的用法1:使用字符串数组作为数据来源

String[] arr = {“全部”,“唱歌”,“画画”,“钢琴”, “运动”}

设置ArrayAdapter:

ArrayAdapter<String> adapter=new ArrayAdapter<String>(MainActivity.this, android.R. layout. Simple_spinner _item , arr);

参数说明:ArrayAdapter有3个参数:
第一个参数为Context,
第二个参数为布局文件,
第三个参数为数组(即显示在下拉列表中的内容,不能用int型数组)。此例第二参数应用了Android自带的布局文件,也可以使用用户用户自定义的布局文件来控制列表每个条目的样式。

ArrayAdapter的用法2: 使用XML作为数据来源

在使用XML作为数据来源,需要使用XML文件将下拉菜单列出的所有内容放到values目录下的strings.xml资源文件中,strings.xml的代码如下:

<?xml version="1.0"encoding="utf-8">
<resources>
<string-array name="provinces array">
<item>江苏省</item>
<item>浙江省</item>
<item>上海市</item>
<item>北京市</item>
<item>湖南省</item>
<item>黑龙江省</item>
<item>辽宁省</item>
</string-array>
</resources>

设置ArrayAdapter

将适配器与Spinner相关联:
spinner.setAdapter(adapter);
创建一个监听器:

class SpinnerListener implements OnltemSelectedListener
      @Override 
       public void onltemSelected(AdapterView<?> arg0,View arg1,int arg2,long arg3){   
       String selected = arg0.getltemAtPosition(arg2).toString()//获取选中项文本内容
       Toast.makeText(MainActivity.this,“您选择的是:"+selected).show()

当用户选定了一个条目时,就会调用该方法。第一个参数指整个列表的View对象,第二个参数指被选中条目的View对象,第三个参数指被选中条目的位置,第四个参数指被选中条目的id。上述代码的第4行根据AdapterView中选中条目的位置返回值,这条语句也可以修改为:

String selected =spinner.getSelecteditem()

Step 5: 为控件绑定适配器

spin. setAdapter(adapter);

Step 6: 为控件绑定监听器

在这里插入图片描述

List View

在Android开发中,ListView是一个比较常用的控件。它以列表的形式展示具体数据内容,并且能够根据数据的长度自适应屏幕显示。

使用ListView通常有两个功能:

将数据填充到布局
处理用户的选择点击操作

使用ListView组件开发应用程序时必须包含3个关键要素:

List View中每一行的View;
填入到view中的数据(被映射的字符串、图片或基本组件)
连接数据与ListView的Adapter
在这里插入图片描述

ArrayAdapter与ListView

在界面布局文件中添加ListView组件:

 <ListView
          android:id="@+id/listview"
          android:layout width="fill parent"
          android:layout height="fill parent"/>

为ArrayAdapter装配数据:

String[] items ={“周一”,“周二”,“周三”,“周四”,“周五”,“周六”, “周日” }//定义一个数组适配器 
 ArrayAdapter adapter = new ArrayAdapterthisandroid.R.layout.simple_list item 1,items);
//将适配器与ListView相关联
  lv.setAdapter(adapter);

List View可以通过调用setOnltemClickListener()接口方法设置“点击”ListView某一项的监听事件。
public boolean onltemLongClick(AdapterView<?> parent, View view, int position, long id)
也可以通过调用setOnltemLongClickListener()接口方法设置“长按”ListView某一项的监听事件。
public void onltemClick(AdapterView<?> parent, View view, int position, long id)
第一参数表示事件发生的AdapterView;第二参数表示单击或长按的ListView的某一项View;第三个参数表示单击或长按的这一项在Adapter中的位置(从0开始计数);第四个参数表示单击或长按的这一项在ListView中对应的位置(从0开始计数)。
用匿名内部类实现Toast显示单击ListView中某一项内容的代码如下:

lv.setOnltemClickListener(new AdapterView.OnltemClickListener(){
      @Override 
       public void onltemClick(AdapterView<?> parent,View view,int position,long id){
      textView tv =(textView)view;
Toast.makeText(CostomListActivity.this,tv.getText().toString()+:+items[position],Toast.LENGTH_SHORT).show();
}

Simple Adapter与ListView

在功能代码块中(Activity.java)定义一个HashMap构成的List(列表),将数据以键值对的方式存放在里面,然后构造SimpleAdapter对象,并将数据装配到该适配中。
Simple Adapter(参数1,参数2,参数3,参数4,参数5)
第一个参数为上下文;
第二个参数为用HashMap<String,Object>构成的List;
第三个多ListView上显示的每一行布局文件;
第四个参数为HashMap中所有键构成的字符串数
第五个参数为ListView上每一行布局文件中对应组件ID构成的int型数组。
欢迎大家加我微信交流讨论(请备注csdn上添加)
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程子的小段

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值