您的位置:首页 > 移动开发 > Android开发

Android:下拉列表Spinner(二)

2016-01-06 13:38 686 查看


很多时候显示在下拉列表框的值并不是希望得到的值,如果要做一个联系人下拉列表框,列表框列出的是联系人的姓名,因为姓名有可能相同,所以我们希望得到的值应该为该联系人的id,要实现这种需求我们需要自定义Adapter,当然自定义Adapter需要我们编写一小段代码,如果我们不想编写Adapter,又能实现我们的需求,那是最好不过的了。通过观察ArrayAdapter中getView(int
position, View convertView,
ViewGroup parent)的内部代码发现,如果为ArrayAdapter指定的实际泛型参数类型没有实现CharSequence(字符串)接口,将会调用该类型对象的toString()向下拉列表框输出显示值。利用这个特点我们可以重写javaBean的toString()向下拉列表框提供显示值。

界面设计:

<?xml version="1.0"encoding="utf-8"?>

<LinearLayout

  xmlns:android="http://schemas.android.com/apk/res/android"

 android:layout_width="fill_parent"

 android:layout_height="wrap_content">

  <Spinnerandroid:id="@+id/spinner"

   android:layout_height="wrap_content"

   android:layout_width="fill_parent"/>

</LinearLayout>

代码处理:

public class SpinnerActivity extends Activity {

    private staticfinal String TAG = "SpinnerActivity";

    @Override

    public voidonCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);

       setContentView(R.layout.spinner);

       ArrayAdapter<Person> adapter = newArrayAdapter<Person>(this, android.R.layout.simple_spinner_item);

       adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

       adapter.add(new Person(12, "李明"));

       adapter.add(new Person(100, "李明"));

       adapter.add(new Person(62, "张天"));

        Spinnerspinner = (Spinner) findViewById(R.id.spinner);

       spinner.setAdapter(adapter);

       spinner.setOnItemSelectedListener(newAdapterView.OnItemSelectedListener() {

  @Override

  public voidonItemSelected(AdapterView<?> adapterView, View view, int position, longid) {

  Spinner spinner =(Spinner)adapterView;

  Person person =(Person)adapterView.getItemAtPosition(position);

  }

  @Override

  public voidonNothingSelected(AdapterView<?> view) {

  Log.i(TAG,  view.getClass().getName());

  }

        });

    }

}

Person.java:

public class Person {

  private Integerid;

  private Stringname;

 

  publicPerson(Integer id, String name) {

  this.id = id;

  this.name = name;

  }

 。。。

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: