一起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)

一起Talk Android吧(第四百四十三回:UI控件之NumberPicker)

一起Talk Android吧(第四百四十八回:UI控件之Switch)