I have a hierarchy that is like this:
I want to be able to add the hierarchy above through iteration as long as there is data that could be obtained from the database(using Parse)
I have tried putting up the ImageView and LinearLayout under the parent LinearLayout but it doesn't seem to work. Here is my code in MainActivity.Java:
LinearLayout LL_Outer = (LinearLayout) findViewById(R.id.new_linearLayoutOuter); LL_Outer.setOrientation(LinearLayout.VERTICAL); // set orientation LL_Outer.setBackgroundColor(color.white); // set background // set Layout_Width and Layout_Height LinearLayout.LayoutParams layoutForOuter = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); LL_Outer.setLayoutParams(layoutForOuter); LinearLayout LL_Inner = (LinearLayout) findViewById(R.id.new_linearLayoutInner); LL_Inner.setOrientation(LinearLayout.HORIZONTAL); LL_Inner.setBackgroundColor(color.white); LinearLayout.LayoutParams layoutForInner = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); LL_Inner.setLayoutParams(layoutForInner); //LL_Outer.addView(LL_Inner); ImageView IV = (ImageView) findViewById(R.id.new_imageViewPP); //IV.getLayoutParams().height = 55; //IV.getLayoutParams().width = 55; LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); params.setMargins(14, 12, 0, 0); params.height = 55; params.weight = 55; IV.setBackgroundColor(color.black); IV.setLayoutParams(params); LL_Inner.addView(IV); LL_Outer.addView(LL_Inner);
I don't know where I went wrong as my code did not prompt any error. Please help.
EDIT: I have edited the Orientations accordingly and when I run the app, it stops working. And prompts an error in LogCat saying "The specified child already has a parent. You must call removeView() on the child's parent first.
Here's my XML:
<LinearLayout android:id="@+id/new_linearLayoutOuter" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@color/white" android:orientation="horizontal" > <ImageView android:id="@+id/new_imageViewPP" android:layout_width="55dp" android:layout_height="55dp" android:layout_marginLeft="14dp" android:layout_marginTop="12dp" android:background="@color/black" android:contentDescription="@string/pp" /> <LinearLayout android:id="@+id/new_linearLayoutInner" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@color/white" android:orientation="vertical" > <TextView android:id="@+id/new_textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/movie_title" android:paddingTop="10dp" android:paddingLeft="7dp" android:textSize="15sp" /> <!-- Title of the movie --> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/review_by" android:paddingTop="3dp" android:paddingLeft="7dp" android:textSize="12sp" /> <!-- By --> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/movie_stars" android:paddingTop="3dp" android:paddingLeft="7dp" android:textSize="12sp" /> <!-- Rating and date --> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/sample_string" android:maxLines="5" android:scrollbars="vertical" android:paddingTop="10dp" android:paddingLeft="7dp" android:textSize="12sp" android:layout_gravity="center_vertical|right" /> <!-- Review content --> </LinearLayout> </LinearLayout>
You want that hierarchy programmatically.
- LinearLayout(horizontal) - ImageView - LinearLayout(vertical) - TextView - TextView - TextView - TextView
Ok lets start with Parent LinearLayout
LinearLayout parent = new LinearLayout(context); parent.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); parent.setOrientation(LinearLayout.HORIZONTAL); //children of parent linearlayout ImageView iv = new ImageView(context); LinearLayout layout2 = new LinearLayout(context); layout2.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); layout2.setOrientation(LinearLayout.VERTICAL); parent.addView(iv); parent.addView(layout2); //children of layout2 LinearLayout TextView tv1 = new TextView(context); TextView tv2 = new TextView(context); TextView tv3 = new TextView(context); TextView tv4 = new TextView(context); layout2.addView(tv1); layout2.addView(tv2); layout2.addView(tv3); layout2.addView(tv4);
And you are done :)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With