zoukankan      html  css  js  c++  java
  • spinner和适配器模式

    spinner相当于html表单中的select下拉列表。

    ------------
    |第一种方式|
    ------------
    在string.xml中添加一个数组spinner_data:
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    <string-array name="spinner_data">
    <item >北京</item>
    <item >湖南</item>
    <item >湖北</item>
    </string-array>
    </resources>

    拖拽一个spinner:
    <Spinner
    android:id="@+id/spinner1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:entries="@array/spinner_data"
    android:spinnerMode="dialog"

    />

    <!-- entries 显示spinner当中的数据项
    spinnerMode="dropdown"是默认值下拉列表,spinnerMode="dialog"是以对话框的形式显示--!>
    ------------
    |第二种方式|
    ------------
    BaseAdapter就Android应用程序中经常用到的基础数据适配器,它的主要用途是将一组数据传到像ListView、Spinner、Gallery、GridView等UI显示组件,它是自动继承接口类Adapter。
    假如要往spinner中添加string[]或List。
    --------------------------------------------------------------------------------------------------------------
    a)string[]
    在MainActivity主类中定义一个字符串数组:
    private String[] str = new String[] {
      "山东","山西","北京"
    };


    定义一个继承BaseAdapter的类:
    private class MyAdapter extends BaseAdapter {

    @Override
    public int getCount() {
      // TODO Auto-generated method stub
      return str.length;//重要方法
    }

    @Override
    public Object getItem(int arg0) {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public long getItemId(int arg0) {
      // TODO Auto-generated method stub
      return 0;
    }

    @Override
    public View getView(int position, View view, ViewGroup group) {//重要方法
      // TODO Auto-generated method stub
      //str.length多长此方法就执行几次
      TextView textView = new TextView(MainActivity.this);
      textView.setText(str[position]);
      return textView;
    }

    }


    在onCreate方法中:
    Spinner spinner = (Spinner) findViewById(R.id.spinner1);
    spinner.setAdapter(new MyAdapter());
    --------------------------------------------------------------------------------------------------------------
    b)List
    在MainActivity主类中定义一个List:
    private List list = new ArrayList();

    并在onCreate方法中添加内容:
    list.add("上海");
    list.add("天津");
    list.add("浙江");

    MyAdapter类则只需要修改几处即可:
    1. public int getCount() {

      return list.size();
    }

    2. public View getView(int position, View view, ViewGroup group) {

      TextView textView = new TextView(MainActivity.this);
      textView.setText((CharSequence) list.get(position));
      return textView;
    }

    3.还可以继续给spinner添加事件OnItemSelectedListener:
    spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

    @Override
    public void onItemSelected(AdapterView<?> parent, View view,
    int position, long id) {
    // TODO Auto-generated method stub

      Toast.makeText(MainActivity.this, (CharSequence) list.get(position), 0).show();


    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {
    // TODO Auto-generated method stub



    }


    });

    --------------------------------------------------------------------------------------------------------------

  • 相关阅读:
    黑鲨2无限重启 把竞技按钮调到最上
    绿联 电池
    阿里云
    Centos 8 搭建时钟服务器
    CentOS8系统时间同步解决方法
    解决问题的人干活快的人
    【海通国际】Joe Lowry(Mr. Lithium)谈全球电池原材料供应危机
    Linux 实验楼
    用 set follow-fork-mode child即可。这是一个 gdb 命令,其目的是告诉 gdb 在目标应用调用fork之后接着调试子进程而不是父进程,因为在 Linux 中fork系统调用成功会返回两次,一次在父进程,一次在子进程
    【随笔】阿里云修改DNS
  • 原文地址:https://www.cnblogs.com/UUUP/p/3983394.html
Copyright © 2011-2022 走看看