Android 将 Spinner 绑定(bind)到类

标签 android spinner

我在使用 Spinner 小部件时遇到了一些问题。给定以下代码:

    ArrayList<Person> people= new ArrayList<Person>();

    Person = null;
    for(int i = 0; i!= 10; i++) {
        p = new Person();
        s.setID(i);
        s.setName("Name " + i);
        people.add(s);
    }

我正在使用以下代码将其绑定(bind)到 Spinner:

 Spinner spinner1 = (Spinner) findViewById  (R.id.spinner);       
 ArrayAdapter<Person> adapter = new ArrayAdapter<Person>(this, android.R.layout.simple_spinner_item, people);                           
 spinner1.setAdapter(adapter);  

我想要的是隐藏值 (id) 但在选择时传递,并显示名称。感谢您的帮助。

谢谢。

最佳答案

如果我正确理解您的问题,您希望该名称出现在微调器下拉 View 中。选择项目后,您希望返回 ID。

有两种方法可以解决这个问题。

最简单的方法是实现一个返回 Person 对象中的名称的 toString()。 ArrayAdapter 将在将对象的文本值绑定(bind)到下拉 View 时返回此值。 然后在您的 Activity 中,您可以为 Spinner 设置 onItemClickListener 并调用 adapter.getItemAtPosition(position) 来检索 Person 对象。从那个人对象你可以得到你的 id。

第二种方法是扩展 ArrayAdapter 并实现 getView 和 getDropDownView 以及 getItem 方法。 getView 负责创建您在单击微调器时看到的行。 getDropDownView 负责创建您在微调器中看到的 View 。 getItem 方法将返回对象,或者在您的情况下返回指定位置的 id。您应该在 getView 和 getDropDownView 方法中将 Person 元素的名称绑定(bind)到 TextView 。创建自定义 ArrayAdapter 后,您应该为 Spinner 设置 onItemClicKListener 并像我上面提到的那样处理它。

第一种方法很简单,但第二种方法要好得多,并且可以更好地控制您的适配器,尤其是当您开始开发更复杂的东西时。

希望对您有所帮助。

关于Android 将 Spinner 绑定(bind)到类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2467464/

相关文章:

android - AdapterContextMenuInfo.id

android - 使用 Google Maps Android API 实用程序库的自定义标记

java - 用房间数据库填充微调器

android - 微调器:ArrayAdapter.createViewFromResource 处的 NullPointerException

android - 在带有 behavior_overlapTop 的 CoordinatorLayout 中使用 float 操作按钮

android - 如何使用 'RotateDrawable'?

ruby-on-rails - Prawn :PDF生成带进度条或spinner

android - 如何从微调器中选择值然后检查到 MySql

android - 是否有 Android 应用小部件权限更改的监听器?

java - 如何在 Android 中更改 Spinner 选择的背景颜色