从HashMap值添加android视图TextView元素

时间:2017-01-21 02:58:06

标签: java android view

我有一个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中创建的现有实现,则会出现异常。

不确定我在这里做错了什么。谢谢!

1 个答案:

答案 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);
    }

    .....

确保将新布局添加到活动的父布局。