代码之家  ›  专栏  ›  技术社区  ›  LSikh

将自定义对象设置为微调器并显示特定特性

  •  4
  • LSikh  · 技术社区  · 6 年前

    我有一个微调器,我需要用字符串值填充它,但我还需要保留该字符串的id。

    我要在旋转器上展示这个结构

    public class Item{
    
        private Integer id;
    
        private Double name;
    }
    

    我想在微调器中显示名称,但当我选择一个项目并按下按钮时,我想获得该名称的id。

    字符串不重复,所以我可以 Map<Integer, String> 我想知道是否有更好的解决方案,比如定制适配器或微调器的布局,或者为微调器设置一种数据源对象,并显示对象的特定属性。

    这是我的spinner\u布局。xml

    <?xml version="1.0" encoding="utf-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/spinnerTarget"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="12pt"
        android:gravity="center"/>
    
    2 回复  |  直到 6 年前
        1
  •  7
  •   Navneet Krishna    6 年前

    像这样更改模型类

    public class Item{
    
    private String id;
    private String name;
    
     public String getId() {
        return id;
    }
    
    public String getName() {
        return name;
    }
    
    public String toString() {
    return getName();
    }
    
    }
    

    如下所示设置微调器适配器

    ArrayAdapter<Item> adapter =
                            new ArrayAdapter<Item>(getActivity(), android.R.layout.simple_spinner_dropdown_item, dataNew);
    spinner.setAdapter(adapter);
    

    现在要获取所选项目的id,

     spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
              //get id of the selected item using position 'i'
            }
    
            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {
    
            }
        });
    
        2
  •  3
  •   Diego Venâncio    6 年前

    在你的课堂上 项目 设置为字符串()重写: 实例

    @Override
    public String toString() {
        return getName(); // You can add anything else like maybe getDrinkType()
    }
    

    layouts/layout\u微调器:

    <?xml version="1.0" encoding="utf-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@android:id/text1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="16sp"
        android:textColor="#000000"
        android:textAlignment="center"
        />
    

    在java类中:

    public void loadSpin(List<Item> itemList)
    {
         ArrayAdapter<Item> adapter =
                    new ArrayAdapter<Item>(YourActivity.this, R.layout.layout_spinner, itemList);
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    
            yourSpinner.setSelection(0);
            yourSpinner.setAdapter(adapter);
    }