3

我通过 Android Studio 使用 Sugar ORM 进行 Android 开发。

但我想我有一个非常相似的问题。如何将一个/多个结果查询显示为 String 或 int?我的实体如下所示:

public class PersonsDatabase extends SugarRecord<PersonsSelection>{
String adultText, childText;
int adultCount, childCount;

public PersonsDatabase()
{

}
public PersonsDatabase(String adultText, String childText, int adultCount, int childCount)
{
    this.adultText = adultText;
    this.childText = childText;

    this.adultCount = adultCount;
    this.childCount = childCount;

    this.save();
}

}

它正确保存。但是当我想这样显示时:

public class PersonsSelection extends Activity {

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

    PersonsDatabase personsDatabase = new PersonsDatabase("1 Adult","No Childs",1,0);
    List<PersonsDatabase> personsList = PersonsDatabase.findWithQuery(PersonsDatabase.class,"Select adult_Text from PERSONS_DATABASE");

    list = (ListView)findViewById(R.id.listView);
    list.setAdapter(new ArrayAdapter<PersonsDatabase>(this, android.R.layout.simple_list_item_1, personsList));
}

}

我得到类似:PACKAGENAME .PersonsDatabase@4264c038 但我想要我在构造函数中写的值。

感谢帮助。

4

2 回答 2

3

从上的文档ArrayAdapter

然而,TextView 被引用,它将被数组中每个对象的 toString() 填充。您可以添加自定义对象的列表或数组。覆盖对象的 toString() 方法以确定将为列表中的项目显示哪些文本。

简而言之:只需覆盖类中的toString()方法PersonsDatabase即可返回所需的文本表示。

或者:

要使用除 TextViews 之外的其他内容来显示数组,例如 ImageViews,或者要让 toString() 结果之外的一些数据填充视图,请覆盖getView(int, View, ViewGroup)以返回所需的视图类型。

(再次来自文档)。有很多关于如何去做的例子。

于 2014-09-24T10:13:23.537 回答
0

只需覆盖 toString() 方法。在该方法中,返回您要检索的任何数据库值。

就我而言,我返回了一个我需要的变量名(即消息):

@Override
public String toString() {
    return message;
}
于 2015-04-03T20:07:59.463 回答