• Spinner控件为例其实是Adaptor构造方式的不同(下拉框控件的使用)


    Spinner控件主要有2种方式太实现下拉框的,下面用demo来介绍:

    1、利用String-array来实现的,也是sdk文档中给出的:

            spinner = (Spinner) findViewById(R.id.planets_spinner);
            ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
                    R.array.newNumber, android.R.layout.simple_spinner_item);
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spinner.setAdapter(adapter);
            spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    //                sob(parent);
                    sob( view.getClass());//得知是textView控件
                    TextView v = (TextView) view;
                    v.setText("haha");
                    sob(position);
                    sob(id);
                }
    
                @Override
                public void onNothingSelected(AdapterView<?> parent) {
    
                }
            });
    

    主要是实现adapter的方法下面2句:

    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
            R.array.newNumber, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    

    第一句中的三个参数分别是:context、String.xml中的<string-array> 和android sdk自带的一种布局格式。

    第二句中的参数也是android sdk自带的一种布局文件

    String-array

    <string-array name="newNumber">
            <item>zp</item>
            <item>gwl</item>
            <item>chb</item>
            <item>ych</item>
        </string-array>
    

    2、第二种方法:其实主要是Adapter的构造方法的不同,该方法可以动态的添加下拉选项

     ArrayList<String> list = new ArrayList<String>();
            list.add("zp");
            list.add("gwl");
            list.add("chb");
            list.add("ych");
            ArrayAdapter adapter = new ArrayAdapter(this,R.layout.layout,R.id.text1,
            list);
            spinner.setAdapter(adapter);
    

    该构造方法参数一次是:context,下拉框的每一项样式(是一个布局文件),布局文件中显示的控件的id。最后一个就算list里面存储的不是string类型的东西也会强制转化为string显示。

    layout布局文件

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/text1"
            />
    </LinearLayout>
    

      3、为了自己定义AdaptorArray的样式可以如第二种方式也可以用第三种:

      

       
        ArrayAdapter adapter = new ArrayAdapter(this,R.layout.layout,R.id.text1,
                    COUNTRIES);
    
        private static final String[] COUNTRIES = new String[] {
                "Belgium", "France", "Italy", "Germany", "Spain","Belgiums"
        };
    

      这种方式与第二种类似的,利用布局文件来显示自己设计的下拉样式

  • 相关阅读:
    [Django]Windows下Django配置Apache示范设置
    《职场》笔记20061119
    Python Django还是RoR,这是一个问题
    收集证据:fsjoy.com的流氓推广和幕后流氓主子[updated]
    爱尔兰网友邀请我对Dublin交通监视器进行手机端开发
    {基于Applet的J2ME模拟器}和{microemulator}[J2ME推荐]
    中国移动IM飞信0802上线新版本 试用手记
    [AsyncHandle]什么引发了ObjectDisposedException?
    百度的“搜索背后的人”的战略
    [Python]检查你的站点的人气
  • 原文地址:https://www.cnblogs.com/bokeofzp/p/5952712.html
Copyright © 2020-2023  润新知