2016-07-29 31 views
0

Ich möchte ein paar LinearLayouts einfügen, aber es funktioniert nicht wie es sollte. Es fügt nur einen ein, aber es sollte mehr einfügen.Layout mit verschiedenen Werten einfügen

LinearLayout commentsContainer = (LinearLayout) findViewById(R.id.view_comment_container); 
        commentsContainer.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
        commentsContainer.setOrientation(LinearLayout.HORIZONTAL); 
        for (int i = 0; i < postView.commentLenght(); i++) { 
         Log.e("LENGTH", postView.commentLenght()+"x"+i); 
         LinearLayout commentContainer = new LinearLayout(PostViewActivity.this); 
         commentContainer.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
         LinearLayout userContainer = new LinearLayout(PostViewActivity.this); 
         userContainer.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
         userContainer.setOrientation(LinearLayout.VERTICAL); 
         commentContainer.setOrientation(LinearLayout.HORIZONTAL); 
         commentContainer.setPadding(25,0,0,0); 
         ImageView commentImage = new ImageView(PostViewActivity.this); 
         commentImage.setLayoutParams(new LinearLayout.LayoutParams((int) ((float) width/6), (int) ((float) width/6))); 
         commentImage.setImageBitmap(postView.getComment(i).getImage()); 
         TextView commentText = new TextView(PostViewActivity.this); 
         commentText.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
         commentText.setText(postView.getComment(i).getText()); 
         TextView displayUserText = new TextView(PostViewActivity.this); 
         displayUserText.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
         displayUserText.setText(postView.getComment(i).getDisplayName()); 
         Log.d("TEXT", postView.getComment(i).getText()); 
         Log.e("TEXT", displayUserText.getText()+""); 
         displayUserText.setTag(postView.getComment(i).getUsername()); 
         displayUserText.setTextSize(12); 
         displayUserText.setTextColor(getResources().getColor(R.color.colorAccent)); 
         userContainer.addView(commentImage); 
         userContainer.addView(displayUserText); 
         commentContainer.addView(userContainer); 
         commentContainer.addView(commentText); 
         commentsContainer.addView(commentContainer); 

        } 

Eine andere seltsame Sache: der erste Log.d ist immer der richtige, aber der zweite ist immer der gleiche. Was ist der Fehler?

Antwort

1

Dieser Code kann mithilfe von XML-Ressourcendateien erheblich bereinigt werden. Da jeder der Kommentare die gleiche Form annimmt, kann für beide das gleiche Layout verwendet werden. Sie können dem Layout verschiedene Werte nach Belieben hinzufügen. Diese können alle zu einer ViewGroup innerhalb eines anderen Layouts hinzugefügt werden.

Programmgesteuertes Generieren von Layouts ist wesentlich fehleranfälliger und komplexer als die Verwendung eines XML-Layouts.

Ein wenig in die offizielle Android Dokumentation zu tun ist absolut lohnenswert! https://developer.android.com/guide/topics/ui/declaring-layout.html

+0

Vielen Dank! Ja, es ist wirklich besser :-) – user6586661