2016-01-12 2 views
0

Я создаю linearlayout с программным обеспечением, а затем добавляю к нему представления. Но функция addview добавляет только первую строку элементов (вторая для цикла). Как я могу исправить эту проблему. Я попытался изменить LinearLayout.LayoutParams.WRAP_CONTENT на 5000px, но это все еще показывает только первый элемент. Когда я смотрю журналы, для цикла работает хорошо.programmaticaly created linearlayout не обертывает содержимое

getChildCount метод, возвращающий истинное значение в течение цикла:

Crashlytics.log(Log.ASSERT, shoppingList.Title + "için: ", linearLayout.getChildCount() + ""); 

Также я попытался вызвать invalidate и requestlayout методов после цикла, но тот до сих пор не работает.

for(ShoppingList shoppingList : shoppingLists){ 

     LinearLayout linearLayout = new LinearLayout(MainActivity.activity); 
     containerLL.addView(linearLayout); 

     LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
     layoutParams.setMargins(14, 7, 14, 7); 
     linearLayout.setLayoutParams(layoutParams); 
     linearLayout.setBackgroundResource(R.drawable.rounded_gray); 



     for(int i = 0 ; i < shoppingList.shopLists.size() ; i ++){ 

      Crashlytics.log(Log.ASSERT, shoppingList.Title + "için: ", linearLayout.getChildCount() + ""); 
      ShopList shopList = shoppingList.shopLists.get(i); 

      View v = MainActivity.inflater.inflate(R.layout.row_list, linearLayout, false); 

      TextView  listTitle   = (TextView)  v.findViewById(R.id.listTitle); 
      TextView  brandTV   = (TextView)  v.findViewById(R.id.brandTV); 
      TextView  descriptionTV  = (TextView)  v.findViewById(R.id.descriptionTV); 
      TextView  sizeTV    = (TextView)  v.findViewById(R.id.sizeTV); 
      LinearLayout removeLL   = (LinearLayout) v.findViewById(R.id.removeLL); 
      FrameLayout  seperatorFL  = (FrameLayout)  v.findViewById(R.id.seperatorFL); 

      listTitle.setVisibility(i == 0 ? View.VISIBLE : View.GONE); 
      listTitle.setText(shoppingList.Title); 
      descriptionTV.setText(shopList.description); 
      brandTV.setText(shopList.brandName); 
      sizeTV.setText(shopList.description); 

      removeLL.setVisibility(i == shoppingList.shopLists.size() - 1 ? View.VISIBLE : View.GONE); 
      seperatorFL.setVisibility(i == shoppingList.shopLists.size() - 1 ? View.GONE : View.VISIBLE); 

      Crashlytics.log(Log.ASSERT, "width : " + v.getWidth() + " " + "height" + v.getHeight(), v.getX() + " X " + " " + v.getY() + " Y "); 
      linearLayout.addView(v); 

     } 
    } 

ответ

1

Попробуйте добавить

linearLayout.setOrientation(LinearLayout.VERTICAL); 
+0

спасибо. это решает проблему. –

0

Попробуйте переместить линию containerLL.addView(linearLayout); после второго цикла.

for(ShoppingList shoppingList : shoppingLists){ 

    LinearLayout linearLayout = new LinearLayout(MainActivity.activity); 
    . 
    . 
    . 
    for(.....){ 
     . 
     . 
     . 
    } 

    containerLL.addView(linearlayout); 
} 
Смежные вопросы