如何通货膨胀正确?

时间:2014-12-05 22:27:18

标签: android android-layout layout-inflater android-inflate

我需要在滚动视图上有几个列表视图,Android不允许我这样做我决定手动设置简单地在垂直LinearLayout上充气一些listrows,但一切都不正确

      private void fillData(final ViewGroup parent, final ArrayList<Person> array ){
          for (int i=0;i<array.size();i++){
             final View view = lf.inflate(R.layout.personal_listrow, parent,true);
             parent.setBackgroundColor(getActivity().getResources().getColor(R.color.background_light_darker));
             view.setBackgroundColor(getActivity().getResources().getColor(R.color.background_night_lighter));
              TextView tvName=(TextView) view.findViewById(R.id.tvName);
              TextView tvStatus=(TextView) view.findViewById(R.id.tvStatus);
              TextView tvGender=(TextView) view.findViewById(R.id.tvGender);

//fill textviews with info, set the onClickListeners and so on
}

所以我得到了 - view.setBackgroundColor也绘制了父级。 parent是一个垂直的LinearLayout,视图是水平的LinearLayout - 它很奇怪,我不会只绘制膨胀的元素所以请解释我为什么

接下来的事情 - 在我向数组添加内容之后 - 第一个元素发生了变化,其余部分都是未更改的文本。但是,我使用调试器遍历代码 - 它传递每个元素并设置文本。

clicklisteners仅适用于第一个元素..

你会解释

吗?

此处的垂直,父级布局 - 没什么特别的:

    <LinearLayout 
        android:id="@+id/rodll"
        android:layout_marginTop="16dp"
        android:layout_marginBottom="8dp"
        android:orientation="vertical"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content">
可膨胀的listrow也没什么特别的:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:gravity="center_vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/tvStatus"

        android:layout_width="0dp"
        android:layout_weight=".3"
        android:maxLines="1"
        android:layout_height="wrap_content"
        android:text="tvSt" />

    <TextView
        android:id="@+id/tvName"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:maxLines="1"
        android:layout_height="wrap_content"
        android:text="tvName" />

     <TextView
        android:id="@+id/tvGender"
        android:layout_weight=".1"
        android:layout_width="0dp"
        android:maxLines="1"
        android:layout_height="wrap_content"
        android:text="tvGender" />

  <com.andexert.library.RippleView 
           android:id="@+id/removeRipple"
           xmlns:ripple="http://schemas.android.com/apk/res-auto"
           android:layout_marginLeft="30dp"
           android:layout_width="35dp" 
           android:layout_height="35dp" 
           android:layout_marginRight="7.5dip" 
           android:padding="3dp"
           ripple:rv_alpha="255"
           ripple:rv_zoom="true"
           ripple:rv_zoomScale="0.8"
           ripple:rv_type="rectangle">

     <ImageView
         android:id="@+id/remove_icon"

         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:src="@drawable/remove" />
     </com.andexert.library.RippleView>

    <com.andexert.library.RippleView 
           android:id="@+id/addRipple"
           xmlns:ripple="http://schemas.android.com/apk/res-auto"
           android:layout_width="35dp" 
           android:layout_height="35dp" 
           android:layout_marginRight="7.5dip" 
           android:padding="3dp"
           ripple:rv_alpha="255"
           ripple:rv_zoom="true"
           ripple:rv_zoomScale="0.8"
           ripple:rv_type="rectangle">

     <ImageView
         android:id="@+id/add_icon"

         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:src="@drawable/add" />
     </com.andexert.library.RippleView>

</LinearLayout>

因此。问题是什么以及如何解决?

0 个答案:

没有答案