【问题标题】:How can i display the values in the spinner from the another class?如何显示另一个类的微调器中的值?
【发布时间】:2017-01-15 02:29:24
【问题描述】:

我想将 MainActivity.java 中的值传递给 Name.java 并访问 Name.java 中的值并希望在微调器中显示它。

我该怎么做呢?并且还想在从微调器中选择值时为名称敬酒。请帮助我。

提前致谢。

Name.Java

public class Name {

    private String name;

    public Name(){

    }

    public Name(String name) {
        this.name =  name;
    }

    public String getName() {
        return name;
    }

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

MainActivity.Java

public class MainActivity extends AppCompatActivity {

    ArrayList<Name> names = new ArrayList<>();
    Name name = new Name();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        names = new ArrayList<>();

        Name name = new Name();
        name.setName("dog");
        name.setName("cat");
        name.setName("cow");

        names.add(name);

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

        spinner.setAdapter(new ArrayAdapter<Name>(this, android.R.layout.simple_spinner_dropdown_item, names));

        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                Name value = (Name) parent.getItemAtPosition(position);
              Toast.makeText(MainActivity.this, "value is "+value, Toast.LENGTH_SHORT).show();
            }

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

            }
        });

    }
}

【问题讨论】:

  • 你有什么问题?
  • 此代码在微调器中不显示任何值..
  • 我猜那是因为您使用“名称”作为应该在微调器中显示的值类型,而不是字符串
  • 在您的 Toast 消息中这样使用 "value is " + value.getName()
  • 但是“狗”、“猫”、“牛”这在微调器中没有显示

标签: java android spinner


【解决方案1】:

Name.java 中覆盖toString 方法并返回name

public class Name {

    ...
    @Override
    public String toString(){ 
      return name;  
    }
}

这将有助于显示Spinner 中的项目。

您需要将项目添加到ArrayList。目前您只向ArrayList 添加一项。

...
names = new ArrayList<>();

names.add(new Name("dog"));
names.add(new Name("cat"));
names.add(new Name("cow"));

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

【讨论】:

  • 在 mainactivity 中我应该在哪里调用这个 toString()?
  • 你不必这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多