Android 如何从数组列表对象中仅显示一项微调器?

Android 如何从数组列表对象中仅显示一项微调器?,android,android-spinner,Android,Android Spinner,我有一个名为id的pojo,pojo设置为arraylist,现在我只想从数组列表中替换名称 如何实现这一点 我需要在arraylist中存储姓名和id,但在spinner中只显示姓名我建议您在询问之前查看android开发者网站或搜索谷歌。。不管怎么说,您的代码离正确不远,也许它会工作,但在您的代码中,secretQuestionsArrayList是空的,没有数据。请先填充arrayList,然后将其传递给适配器。在这种情况下,您将在微调器中看到项目 编辑: 如果要从SecretQuesti

我有一个名为id的pojo,pojo设置为arraylist,现在我只想从数组列表中替换名称

如何实现这一点


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

我建议您在询问之前查看android开发者网站或搜索谷歌。。不管怎么说,您的代码离正确不远,也许它会工作,但在您的代码中,secretQuestionsArrayList是空的,没有数据。请先填充arrayList,然后将其传递给适配器。在这种情况下,您将在微调器中看到项目

编辑: 如果要从SecretQuestionsArray列表中获取ex.String属性,则需要获取该属性并将其添加到新列表中,该列表将仅包含SecretQuestionsArray列表中的字符串属性,然后将该列表传递给适配器

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);
像这样创建一个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) {

        }
    });
然后像这样将数据名称添加到微调器中

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) {

        }
    });

就像这是你的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);
试试这个

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);
编辑


secretQuestionsArrayList.getName;不可用您能否使用SecretQuestion类更新您的问题,所以我可以理解@hemavathined的唯一名称spinner@Hemavathi检查代码,您将只获得名称spinner@NileshRathod杰伊dwarkadhish@Hemavathi很高兴为您提供帮助。选择问题时,我需要从arraylist获取Id并将其存储在string@Hemavathi如果选择一个问题,您将获得ID和名称。请检查我的编辑答案。@Hemavathi如果您正在解决问题,请选择正确的ans。@Hemavathi谢谢,很高兴帮助您。