一起Talk Android吧(第四百四十二回:UI控件之下拉列表:Spinner二)
Posted talk_8
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一起Talk Android吧(第四百四十二回:UI控件之下拉列表:Spinner二)相关的知识,希望对你有一定的参考价值。
文章目录
各位看官们大家好,上一回中咱们说的例子是"UI控件之下拉列表:Spinner",这一回中将继续说该例子。闲话休提,言归正转,让我们一起Talk android吧!
看官们,在上一章回中我们介绍了下拉列表的使用方法,不过还有部分内容没有介绍完,本章回中我们将介绍这部分内容:下列列表的适配器。
创建适配器类
下拉列表的适配器和ListView中的适配器类似,它需要继承BaseAdapter
类,同时实现SpinnerAdapter
接口。实现接口时需要重写接口中的方法,这些方法主要用来管理下拉列表中每条选项的内容;至于接口中需要实现哪些方法,以及这些方法有什么作用,我们将通过文本结合代码的方式进行介绍。
示例代码
- 1.创建布局文件
这个布局文件就是下拉列表中每个选项的布局,下面是一个示例代码,代码中是一个横向的布局,其中包含两个文件控件。下拉列表的每个选项就按照这个布局来显示。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="48dp">
<TextView
android:id="@+id/tv_item_value"
android:layout_weight="3"
android:layout_width="0dp"
android:layout_height="wrap_content">
</TextView>
<TextView
android:id="@+id/id_tv_item_unit"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content">
</TextView>
</LinearLayout>
- 2.创建适配器类,注意继承父类和实现接口,详细内容参考下面的示例代码:
public class CustomSpinnerAdapter extends BaseAdapter implements SpinnerAdapter
private Context mContext;
//这个列表用来存放下拉列表中显示的数据
private ArrayList<String> contentList;
private TextView mTVValue;
private TextView mTVValueUnit;
public CustomSpinnerAdapter(Context context, ArrayList<String> contentList)
mContext = context;
this.contentList = contentList;
//下拉列表下拉时时回调此方法
@Override
public View getDropDownView(int i, View view, ViewGroup group)
if(group == null || mContext == null)
return null;
//这里的布局文件就是上一个步骤中创建的布局文件
View v = LayoutInflater.from(mContext) .inflate(R.layout.spinner_item,group,false);
mTVValue = v.findViewById(R.id.tv_item_value);
mTVValueUnit = v.findViewById(R.id.id_tv_item_unit);
mTVValue.setText(getItem(i).toString());
return v;
//返回下拉列表中所有选项的数量
@Override
public int getCount()
return contentList.size();
//返回下拉列表中的第i条选项,注意i从0开始
@Override
public Object getItem(int i)
if(contentList.isEmpty())
return null;
else
return contentList.get(i);
@Override
public long getItemId(int i)
return i;
//这个方法是在下拉列表初始化时调用
@Override
public View getView(int i, View view, ViewGroup group)
if(group == null || mContext == null)
return null;
//这里的布局文件就是上一个步骤中创建的布局文件
View v = LayoutInflater.from(mContext) .inflate(R.layout.spinner_item,group,false);
mTVValue = v.findViewById(R.id.tv_item_value);
mTVValueUnit = v.findViewById(R.id.id_tv_item_unit);
mTVValue.setText(getItem(i).toString());
return v;
@Override
public boolean isEmpty()
if(contentList.isEmpty())
return true;
else
return false;
上面代码中我们只重写了SpinnerAdapter
接口中的部分方法,其它的方法没有列出来。我们重写的这些方法都是比较常用的方法,其它的方法大家可以去看接口文档中的介绍。
内容总结
创建适配器类主要包含两个部分:类的构造方法和接口的方法。
- 构造方法主要用来获取下拉列表中显示的数据。
- 接口中的方法主要用来创建下拉列表中的选项,并且对选项中的内容做处理。
- 此外,选项的布局通过布局文件独立控制,可以依据项目需求自行设计。
看官们,关于下拉列表的内容就全部介绍完了,建议大家把本章回的内容和上一章回的内容放在一起阅读。此外,关于下拉列表还有一些小的知识没有介绍,比如常用的属性和方法等,这些内容相对简单一些,大家可以去参考官方文档,文档中介绍的非常全面。
看官们,关于"UI控件之下拉列表:Spinner"的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!
以上是关于一起Talk Android吧(第四百四十二回:UI控件之下拉列表:Spinner二)的主要内容,如果未能解决你的问题,请参考以下文章
一起Talk Android吧(第四百四十七回:UI控件之TimerPickerDialog)
一起Talk Android吧(第四百四十六回:UI控件之DatePickerDialog)
一起Talk Android吧(第四百四十回:如何给RecyclerView添加分隔线)
一起Talk Android吧(第四百四十九回:修改各种Picker的style)