2013-09-07 2 views
2

런타임에 서버에서 가져온 일부 데이터를 표시하기 위해 ListView를 사용하는 앱에서 작업하고 있습니다.Android에서 ListView 행의 높이를 조정 하시겠습니까?

목록보기에서 데이터를 동적으로 설정했습니다. 그냥 내가 "top_header_relay"및 요소의 나머지 부분을 표시해야하는 첫번째 요소에 대한

<LinearLayout 
    android:id="@+id/top_lilay" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 

    <RelativeLayout 
     android:id="@+id/top_header_relay" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="@drawable/timeline_header_bg_480" > 

     <TextView 
      android:id="@+id/bride_tv" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerHorizontal="true" 
      android:layout_marginTop="13dp" 
      android:text="STELLA" 
      android:textColor="@android:color/black" 
      android:textSize="50sp" /> 

     <ImageView 
      android:id="@+id/and_IV" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@id/bride_tv" 
      android:layout_centerHorizontal="true" 
      android:layout_marginTop="3dip" 
      android:background="@drawable/and" /> 

     <TextView 
      android:id="@+id/groom_tv" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@id/and_IV" 
      android:layout_centerHorizontal="true" 
      android:layout_marginTop="3dip" 
      android:text="JOSE" 
      android:textColor="@android:color/black" 
      android:textSize="50sp" /> 

     <TextView 
      android:id="@+id/time_tv" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@id/groom_tv" 
      android:layout_centerHorizontal="true" 
      android:layout_marginTop="15dip" 
      android:text="85 DIAS 23 HOURAS 22 MINUS Y 30 SEG" 
      android:textColor="@android:color/white" 
      android:textSize="15sp" /> 

     <TextView 
      android:id="@+id/text_tv" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@id/time_tv" 
      android:layout_centerHorizontal="true" 
      android:layout_marginBottom="10dip" 
      android:layout_marginTop="2dip" 
      android:text="para nuestro gran dia" 
      android:textColor="@android:color/white" 
      android:textSize="15sp" /> 
    </RelativeLayout> 

    <ImageView 
     android:id="@+id/bar_view" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="@drawable/orange_bar_480" /> 

    <ImageView 
     android:id="@+id/photo_IV" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_margin="10dip" 
     android:background="@drawable/post_photo" /> 
</LinearLayout> 

<RelativeLayout 
    android:id="@+id/heading_relay" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/top_lilay" 
    android:layout_marginBottom="10dip" 
    android:layout_marginLeft="10dip" 
    android:layout_marginRight="10dip" > 

    <ImageView 
     android:id="@+id/profile_pic_IV" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginRight="5dip" 
     android:background="@drawable/profile_pic" /> 

    <TextView 
     android:id="@+id/username_tv" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_toRightOf="@id/profile_pic_IV" 
     android:text="LOREM IPSUM TITLE" 
     android:textColor="@android:color/black" 
     android:textSize="22sp" /> 

    <TextView 
     android:id="@+id/posttime_tv" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/username_tv" 
     android:layout_toRightOf="@id/profile_pic_IV" 
     android:text="Jose Q. a las 2:30 pm el 24 september 2013" 
     android:textColor="@android:color/black" 
     android:textSize="12sp" /> 
</RelativeLayout> 

<LinearLayout 
    android:id="@+id/buttons_relay" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/heading_relay" 
    android:layout_marginBottom="10dip" 
    android:layout_marginLeft="10dip" 
    android:layout_marginRight="10dip" 
    android:weightSum="3" > 

    <LinearLayout 
     android:id="@+id/like_lilay" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:orientation="horizontal" > 

     <ImageView 
      android:id="@+id/like_IV" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginRight="5dip" 
      android:background="@drawable/like" /> 

     <TextView 
      android:id="@+id/likes_count_tv" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="4" 
      android:textColor="@android:color/black" /> 

     <TextView 
      android:id="@+id/likes_tv" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/likes" 
      android:textColor="@android:color/black" /> 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/comment_lilay" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:orientation="horizontal" > 

     <ImageView 
      android:id="@+id/comment_IV" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginRight="5dip" 
      android:background="@drawable/comment" /> 

     <TextView 
      android:id="@+id/comment_count_tv" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="4" 
      android:textColor="@android:color/black" /> 

     <TextView 
      android:id="@+id/comment_tv" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/commments" 
      android:textColor="@android:color/black" /> 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/fav_lilay" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:orientation="horizontal" > 

     <ImageView 
      android:id="@+id/fav_IV" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginRight="5dip" 
      android:background="@drawable/favorite" /> 

     <TextView 
      android:id="@+id/fav_tv" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/favorites" 
      android:textColor="@android:color/black" /> 
    </LinearLayout> 
</LinearLayout> 
난을 변경해야 할 : 다음은 ROW 내 XML이다 GONE에 대한 가시성. 이렇게하면 다른 행의 높이가 행의 맨 아래에 큰 빈 공간이되는 첫 번째 행의 높이와 동일하게 유지됩니다.

어떻게하면 런타임에 목록의 다른 행 높이를 조정할 수 있습니다.

어댑터 클래스 : 당신이 목록을 채울 때

public class PostsListAdapter extends BaseAdapter implements OnClickListener{ 

    ArrayList<String> itemList=null; 

    private Activity _mContext=null; 
    public LayoutInflater inflater=null; 
    private Context _Context = null; 
    private ArrayList<ViewHolder> listHolder=null; 
    private int[] imageList = {R.drawable.calendar_icon, 
      R.drawable.location_icon,R.drawable.fun_icon, 
      R.drawable.notification_icon,R.drawable.invitation_icon, 
      R.drawable.change_wedding,R.drawable.settings_icon, 
      R.drawable.logout_icon}; 

    /** 
    * PostsListAdapter 
    * @param context 
    * @param itemList 
    */ 
    public PostsListAdapter(Activity context,ArrayList<String> itemList) { 
     super(); 
     this._Context = context; 
     this._mContext = context; 
     this.itemList = itemList; 

     this.inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     listHolder = new ArrayList<PostsListAdapter.ViewHolder>(); 
    } 


    public int getCount() { 
     return itemList.size(); 
    } 

    public Object getItem(int position) { 
     return itemList.get(position); 
    } 

    public long getItemId(int position) { 
     return 0; 
    } 

    public static class ViewHolder{ 
     private ImageView _postImageView=null; 
     private ImageView _profilePicImageView=null; 
     private TextView _usernameTitleTextView=null; 
     private TextView _timeTextView=null; 
     private TextView _likeCountTextView=null; 
     private TextView _commentsCountTitleTextView=null; 

     private LinearLayout _likeLinearLayout=null; 
     private LinearLayout _commentLinearLayout=null; 
     private LinearLayout _favLinearLayout=null; 
     private RelativeLayout _topheaderRelay=null; 
     private ImageView _barViewImageView=null; 
    } 
    /** 
    * 
    */ 
    public View getView(final int position, View convertView, ViewGroup parent) { 

     final ViewHolder holder; 
     if(convertView==null){ 
      holder = new ViewHolder(); 

      convertView = inflater.inflate(R.layout.post_list_element, null); 

      holder._postImageView=(ImageView)convertView.findViewById(R.id.photo_IV); 
      holder._postImageView.setOnClickListener(this); 
      holder._profilePicImageView=(ImageView)convertView.findViewById(R.id.profile_pic_IV); 
      holder._profilePicImageView.setOnClickListener(this); 

      holder._usernameTitleTextView = (TextView) convertView.findViewById(R.id.username_tv); 
      holder._usernameTitleTextView.setClickable(false); 
      holder._timeTextView = (TextView) convertView.findViewById(R.id.posttime_tv); 
      holder._timeTextView.setClickable(false); 
      holder._likeCountTextView = (TextView) convertView.findViewById(R.id.likes_count_tv); 
      holder._likeCountTextView.setClickable(false); 
      holder._commentsCountTitleTextView = (TextView) convertView.findViewById(R.id.comment_count_tv); 
      holder._commentsCountTitleTextView.setClickable(false); 

      holder._likeLinearLayout = (LinearLayout) convertView.findViewById(R.id.like_lilay); 
      holder._likeLinearLayout.setOnClickListener(this); 
      holder._commentLinearLayout = (LinearLayout) convertView.findViewById(R.id.comment_lilay); 
      holder._commentLinearLayout.setOnClickListener(this); 
      holder._favLinearLayout = (LinearLayout) convertView.findViewById(R.id.fav_lilay); 
      holder._favLinearLayout.setOnClickListener(this); 

      convertView.setTag(holder); 
     } 
     else 
      holder=(ViewHolder)convertView.getTag(); 


     if(position!=0){ 
      holder._topheaderRelay = (RelativeLayout) convertView.findViewById(R.id.top_header_relay); 
      holder._topheaderRelay.setVisibility(View.GONE); 
      holder._barViewImageView = (ImageView) convertView.findViewById(R.id.bar_view); 
      holder._barViewImageView.setVisibility(View.GONE); 
     }else{ 
      holder._topheaderRelay = (RelativeLayout) convertView.findViewById(R.id.top_header_relay); 
      holder._topheaderRelay.setVisibility(View.VISIBLE); 
      holder._barViewImageView = (ImageView) convertView.findViewById(R.id.bar_view); 
      holder._barViewImageView.setVisibility(View.VISIBLE); 
     } 
     listHolder.add(holder); 

     return convertView; 
    } 


    @Override 
    public void onClick(View v) { 
     switch (v.getId()) { 

     case R.id.like_lilay: 

      break; 
     case R.id.comment_lilay: 

      break; 
     case R.id.fav_lilay: 

      break; 
     case R.id.profile_pic_IV: 

      break; 
     case R.id.photo_IV: 

      break; 
     default: 
      break; 
     } 
    } 
} 
+0

어댑터 클래스를 표시 할 수 있습니까? – Shrikant

+0

게시 됨 ... @ Shrikant –

+0

getview 메소드에서 relativelayout에 대한 LayoutParams를 설정하려고 했습니까? – Shrikant

답변

0

이의 getView 기능은보기를 팽창하고 레이아웃 속성을 설정하는 가장 좋은 장소입니다. setvisibility 함수를 사용하여 항목 위치를 기준으로 다른 행의 가시성을 숨길 수 있습니다

+1

내 쿼리를 올바르게 읽으십시오 .... 내 관심사는 상대 레이아웃에 숨어 있기 때문에 목록 행의 높이를 조정하는 것입니다. –

+0

내가 말했듯이, 당신은 getview 메소드에서 그것을 할 수있다. layoutparams를 사용하여 목록 행의 높이를 조절할 수 있습니다. getlayoutparams를 사용해 뷰의 기존의 레이아웃 파라미터를 취득 해, 높이를 변경해, setlayoutparams를 사용해 뷰에 다시 설정합니다. 나는 네 질문을 정확하게 이해했다. 그렇지 않다면, 사과! – prijupaul

관련 문제