2017-01-21 9 views
0

私は0からfirebaseからフェッチされた無限値までの任意の場所を含むHashMapを持っています。マップオブジェクトの各キーの文字列値を取得できますが、動的に生成されたTextView要素のテキストを設定することによって、そのキーをビューに追加できないようです。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); 
    } 

    ..... 

は、アクティビティの親のレイアウトに新しいレイアウトを追加してください。

関連する問題