2017-01-21 57 views
0

我有一個HashMap,它包含從firebase中獲取的0到無限值的任何地方。我可以獲取地圖對象中每個鍵的字符串值,但似乎無法通過設置動態生成的TextView元素的文本將該鍵添加到視圖。添加android視圖來自HashMap值的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

不能將多個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); 
    } 

    ..... 

確保新的佈局添加到活動的父佈局。