如何获取存储在列表中的对象的属性
Posted
技术标签:
【中文标题】如何获取存储在列表中的对象的属性【英文标题】:How to get properties of an object stored in a List 【发布时间】:2019-10-17 21:24:17 【问题描述】:我从 firebase 实时数据库中检索数据,然后将其存储到列表中,以便显示数据。
我的问题是,显示的数据没有显示存储的对象及其属性,而是所谓的名称/标签或与此类似的东西。
正在显示的内容:
com.example.husiapp2.Homework@1abbfc6
应该显示什么(带有属性的对象):
Homework
-Title,
-Class
我的代码:
public class Homework
public String Title;
public String Class;
public String ExpireDate;
public Homework()
public Homework(String title, String aClass,String expireDate)
Title = title;
Class = aClass;
ExpireDate = expireDate;
DatabaseReference ref;
Homework homework;
final List<Homework> hw = new ArrayList<>();
ListView hwlist;
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_hw);
Log.d("HWAC122",hw.toString());
hwlist = findViewById(R.id.hwlist);
ref = FirebaseDatabase.getInstance().getReference("User").child(FirebaseAuth.getInstance().getCurrentUser().getUid()).child("Homework");
ref.addValueEventListener(new ValueEventListener()
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot)
for(DataSnapshot ds:dataSnapshot.getChildren())
homework = new Homework();
homework.Title = ds.getValue(Homework.class).Title;
homework.Class = ds.getValue(Homework.class).Class;
homework.ExpireDate = ds.getValue(Homework.class).ExpireDate;
Log.d("test123",homework.toString());
hw.add(homework);
SetAdapter();
);
public void SetAdapter()
ArrayAdapter adapter = new ArrayAdapter<Homework>(this,android.R.layout.simple_list_item_1,hw);
hwlist.setAdapter(adapter);
【问题讨论】:
【参考方案1】:com.example.husiapp2.Homework@1abbfc6
是不覆盖toString()
的对象的标准字符串格式。它由对象的类及其在 JVM 内存中的位置组成。如果您希望 toString()
生成其他内容,则必须覆盖它并使其返回您要打印的内容。
public class Homework
public String Title;
public String Class;
public String ExpireDate;
public Homework()
public Homework(String title, String aClass,String expireDate)
Title = title;
Class = aClass;
ExpireDate = expireDate;
// Override toString
@Override
public String toString()
return "Whatever you want it to be";
覆盖toString()
并不总是最好的。很多时候最好只编写一些其他函数,将对象传递给它,然后让它返回格式化的字符串。无论哪种方式,您都必须编写生成字符串的代码。
【讨论】:
对不起,我不知道你在问什么。 toString 与所谓的“生命周期”无关。【参考方案2】:在您创建的 java 类中实现 getter 和 setter 方法。按 alt+insert 并为您声明的所有变量选择实现 getter 和 setter。通过这个,您可以将数据插入到firebase并从firebase中检索数据
【讨论】:
以上是关于如何获取存储在列表中的对象的属性的主要内容,如果未能解决你的问题,请参考以下文章