ListView显示一些数字而不是对象的字段

时间:2013-05-29 18:16:05

标签: android

我是Android的初学者并练习一些基本的东西。我创建了我的第一个android应用程序,并在包中的src文件夹中,我在类MainActivity的同一个包中创建了类Products。 在MainActivity中,我使用simple_list_item_1创建ListView

  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ListView list=(ListView)findViewById(R.id.bill);
    adapter=new ArrayAdapter<Products>(this,android.R.layout.simple_list_item_1,tn);
    list.setAdapter(adapter);

并制作按钮

    Button drink=(Button)findViewById(R.id.coffe);
    drink.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v) {
            Products c=new Products("coffe","100,00");          
            adapter.add(c);
        }

});

当我在平板电脑上运行时,应用程序正常运行,但当我按下按钮drink而不是在列表中显示coffe 100,00时,它会显示com.ana.helloworld.Products@410c9a40

类产品是基本的

   package com.ana.helloworld;

   public class Products {

private String name = "noname";
private String price="null";

public Products(){
    };

public Products(String name,String price)
{
    this.name=name;
    this.price=price;
};

public String getPrice(){
return price;}

public void setPrice(String p){
    price=p;}

public String getName(){
    return name;}

public void setName(String n){
    name=n;}

     }  

也许类产品应该在其他包中?在此先感谢!!

2 个答案:

答案 0 :(得分:1)

你需要定义一个toString()方法,它显示你想要的东西,而不是Object提供的默认方法,它可以输出Classname @ 123f12。

答案 1 :(得分:1)

您的Product类需要一个toString方法,如下所示:

public String toString(){
    StringBuilder str = new StringBuilder();
    str.append(name);
    str.append("\n");
    str.append(price);

    return str.toString(); }