如何在数组列表对象中只显示一个项目的微调器?

时间:2018-02-02 09:41:18

标签: android android-spinner

我有pojo的名字和id和pojo设置为arraylist现在我想从数组列表中仅取代名称。

如何实现这个???

我需要在arraylist中存储name和id,但只在spinner中显示名称

4 个答案:

答案 0 :(得分:1)

试试这个

像这样创建一个Pojo类

public class POJO
{
    String id,name;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

将数据名称添加到微调器中,如下所示

ArrayList<POJO>pojoArrayList= new ArrayList<>();
        for (int i=0;i<20;i++){
            POJO pojo= new POJO();
            pojo.setId(i+"");
            pojo.setName("name "+i);
            pojoArrayList.add(pojo);
        }

        String []SpnName=new String[pojoArrayList.size()];
        String []SpnID=new String[pojoArrayList.size()];

        for (int i=0;i<pojoArrayList.size();i++){

            SpnName[i]=pojoArrayList.get(i).getName();
            SpnID[i]=pojoArrayList.get(i).getId();
        }

        ArrayAdapter arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, SpnName);
        arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
        spinner.setAdapter(arrayAdapter);

       spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
            Toast.makeText(MainActivity.this, "Cliked Id :"+SpnID[i], Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });

答案 1 :(得分:0)

我会建议你检查android开发者网站或搜索谷歌之前询问..无论如何你的代码距离正确不远,也许它会起作用,但在你的代码中,bundle exec bin/delayed_job --number_of_workers=2 start 是空的,没有数据。请首先填充您的arrayList,然后将其传递给适配器。在这种情况下,您将看到微调器中的项目

编辑: 如果你想得到前任。来自secretQuestionsArrayList的字符串属性然后您需要获取属性并将其添加到新列表中,该列表将仅包含来自secretQuestionsArrayList的String属性,然后将该列表传递给适配器

答案 2 :(得分:0)

像这是你的秘密问题的pojo类

public class SecretQuestion{

@SerializedName("id")
@Expose
private Integer id;
@SerializedName("name")
@Expose
private String name;


public Integer getId() {
    return id;
}

public void setId(Integer id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

}

仅获取适配器的名称:

secretQuestionsArrayList.getName()

完整代码:

   ArrayList<SecretQuestion> secretQuestionsArrayList = new ArrayList<>();
arrayAdapter = new ArrayAdapter(activity, android.R.layout.simple_spinner_item, secretQuestionsArrayList.getName());
arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
questionSpinner.setAdapter(arrayAdapter);

答案 3 :(得分:0)

试试这个

ArrayList<SecretQuestion> secretQuestionsArrayList = new ArrayList<>();
ArrayList<String> secretQueName = new ArrayList<>();

for (int i = 0; i < secretQuestionsArrayList.size(); i++) {

       Log.i("Secrete Name"," : "+ secretQuestionsArrayList.get(i).getName());
       secretQueName.add(secretQuestionsArrayList.get(i).getName());
}

arrayAdapter = new ArrayAdapter(activity, android.R.layout.simple_spinner_item, secretQueName);
arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
questionSpinner.setAdapter(arrayAdapter);

修改

questionSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) {

                 String Questionname = questionSpinner.getSelectedItem().toString();
                 String Id = secretQuestionsArrayList.get(position).getId();

                 Log.i("Name"," : "+ Questionname);
                 Log.i("Id"," : "+ Id);

            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {

            }
        });