填充ListView时出现奇怪符号,请问问题出在哪里?
解决ListView显示Animal对象出现奇怪符号的问题
嘿,这个问题我太熟了!你看到的那些“奇怪符号”其实是Java对象默认的toString()方法输出——通常是类的全限定名加上一串哈希值,看起来乱糟糟的对吧?
问题根源
当你把Animal对象列表直接传给ListView.setItems()时,ListView在渲染每一项的时候,会自动调用每个对象的toString()方法来获取要显示的文本。但如果你的Animal类没有重写Object类自带的toString()方法,就会使用默认实现,也就是输出类似com.yourpackage.Animal@1234abcd这种奇怪的字符串。
快速解决方法:重写Animal类的toString()
最简单的修复方式就是在你的Animal类里重写toString()方法,返回你希望在ListView中显示的内容,比如把动物的类型、名字、性别组合起来:
public class Animal { // 你的成员变量:type, name, gender private String type; private String name; private String gender; // 构造方法、getter/setter方法这里省略 @Override public String toString() { // 按你想要的格式拼接内容,比如: return String.format("%s - %s (%s)", type, name, gender); // 或者只显示名字:return name; 完全看你的需求 } }
进阶方案:自定义ListView单元格(可选)
如果之后你需要更复杂的UI展示(比如每个列表项加图标、不同颜色的文本),可以用setCellFactory自定义单元格渲染逻辑,不过对于你当前的场景,重写toString()已经足够解决问题啦。
修改完Animal类的toString()方法后,再调用AnimalList.setItems(animals),ListView就会显示你定义的清晰文本,不会再出现奇怪符号了!
内容的提问来源于stack exchange,提问作者Tom van den Bogaart
相关产品推荐
相关产品推荐

