我有一个HashMap,包含从firebase获取的从0到无限值的任何值。我可以获取地图对象中每个键的字符串值,但似乎无法通过设置动态生成的TextView元素的文本将该键添加到视图中。
public void onResume() {
final LinearLayout objLayout = new LinearLayout(getBaseContext());
final TextView nrg = new TextView(getBaseContext());
DatabaseReference dbRef = db.getReference("data/objs/" + token);
dbRef.addValueEventListener(new ValueEventListener() {
public void onDataChange (DataSnapshot dataSnapshot){
HashMap<Object, Object> val = (HashMap <Object, Object>) dataSnapshot.getValue();
for (HashMap.Entry<Object,Object> entry:val.entrySet()){
nrg.setText(entry.getValue().toString());
objLayout.addView(nrg);
}
}
我删除了一些@Overrides等,以便于阅读。我得到了各种错误,例如与新LinearLayout的赋值相关的NullPointerException,或者如果我引用我在XML中创建的现有实现,则会出现异常。
不确定我在这里做错了什么。谢谢!
答案 0 :(得分:0)
您不能多次将相同的TextView实例添加到布局中。您可以修改布局中的现有TextView,也可以删除并再次添加。
您可以在onResume()
中执行此操作 final LinearLayout layout = new LinearLayout(getBaseContext());
TextView label;
.....
.....
for (String value : values) {
label = new TextView(getBaseContext());
label.setText(value);
layout.addView(label);
}
.....
确保将新布局添加到活动的父布局。