所谓 Spinner 组件

Posted djuwcnhwbx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了所谓 Spinner 组件相关的知识,希望对你有一定的参考价值。

Spinner组件在平常的开发过程中应该算是比较常用的隶属于Input Controlandroid控件了,所以我们很有必要掌握这一个知识点,下面我就来谈一谈我对这个组件的一些认识。


是什么?

下拉菜单给用户提供了一个从一串数据中选择自己喜欢的值得非常方便的体验。触摸下拉菜单,就可以看到可供选择的一些数据。
技术分享图片


怎么用?

对于我们这些开发者来说,他是什么远远没有他怎么用来的重要,所以我们还是要“透过现象看本质(这句话用在这里真的好挫啊,?(? ???ω??? ?)?)”。

首先,引控件
<Spinner
    android:id="@+id/planets_spinner"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />
  • 1
  • 2
  • 3
  • 4
其次,给资源

说是给资源,就是指我们要进行显示的那些数据。官方的API文档上是这样解释的。

The choices you provide for the spinner can come from any source, but must be provided through an SpinnerAdapter, such as an ArrayAdapter if the choices are available in an array or a CursorAdapter if the choices are available from a database query.

但是咧,为了演示的方便嘛。我还是是哦那个一个简单的ArrayAdapter好了。资源是定义在了res/values/strings.xml中了。如下:

<resources>

    <!--
        Base application theme, dependent on API level. This theme is replaced
        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
    -->
    <style name="AppBaseTheme" parent="Theme.AppCompat.Light">
        <!--
            Theme customizations available in newer API levels can go in
            res/values-vXX/styles.xml, while customizations related to
            backward-compatibility can go here.
        -->
    </style>

    <!-- Application theme. -->
    <style name="AppTheme" parent="AppBaseTheme">
        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
    </style>

    <string-array name="planets_array">
        <item>Mercury</item>
        <item>Venus</item>
        <item>Earth</item>
        <item>Mars</item>
        <item>Jupiter</item>
        <item>Saturn</item>
        <item>Uranus</item>
        <item>Neptune</item>
    </string-array>
</resources>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
最后,加点“特效”呗

就是将资源加载到下拉控件上,并让用户得知这一数据的变化,所以我们需要
- adapter
- spinner
- OnItemSelectedListener
具体来说可以这样。

adapter = ArrayAdapter.createFromResource(MainActivity.this, R.array.planets_array, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
   //之所以可以这样,是因为该类已经implements了接口了     spinner.setOnItemSelectedListener(this);
  • 1
  • 2
  • 3
  • 4

然后我们只需要在相应的这个接口的两个方法中实现自己的业务逻辑就可以了。我做的仍然是比较简单,如下:

  @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position,
            long id) {
        String str = parent.getItemAtPosition(position).toString();
        textview.setText(str);
    }
    @Override
    public void onNothingSelected(AdapterView<?> parent) {
        // TODO Auto-generated method stub
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

好了,这样就算是完成咯。是不是很简单?

小小的总结一下


要想使用下拉控件,大致的来说可以这样做:

  • 在布局中声明控件
  • 在资源文件中定义好资源(这不是唯一的方式哦)
  • 创建适配器(也有好多个,使用适合的即可)
  • 实现相应的接口。完成自己的业务逻辑。

就酱紫,完成咯。

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow






以上是关于所谓 Spinner 组件的主要内容,如果未能解决你的问题,请参考以下文章

根据在 Spinner 中选择的数字,相同的片段应该出现在另一个之下。如何?

检测 Spinner 组件时出现问题

在 Fragment 中使用 Spinner 和 Adapter

Android-----spinner组件使用(实现下单)

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

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