2017-06-24 71 views
1

如何在每個expandablelistview中將此單行添加爲靜態?如何在expandablelistview中添加靜態行

enter image description here

這是我的佈局吹氣:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 


    <RelativeLayout 
    android:padding="5dp" 
     android:layout_marginTop="20dp" 
    android:layoutDirection="ltr" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 



     <TextView 
      android:text="#" 
      android:id="@+id/txt_rank_standings" 
      android:textSize="16sp" 
      android:layout_alignParentStart="true" 
      android:layout_alignParentLeft="true" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 
     <TextView 
      android:text="TEAM" 
      android:id="@+id/txtteam" 
      android:textSize="16sp" 
      android:layout_marginLeft="15dp" 
      android:layout_marginStart="15dp" 
      android:layout_toRightOf="@+id/txt_rank_standings" 
      android:layout_toEndOf="@+id/txt_rank_standings" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 
     <TextView 
      android:id="@+id/textView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginRight="15dp" 
      android:textSize="16sp" 
      android:layout_marginEnd="15dp" 
      android:layout_toLeftOf="@+id/txt_points_standings" 
      android:layout_toStartOf="@+id/txt_points_standings" 
      android:text="P" /> 

     <TextView 
      android:id="@+id/txt_points_standings" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginRight="15dp" 
      android:textSize="16sp" 
      android:layout_marginEnd="15dp" 
      android:layout_alignParentEnd="true" 
      android:layout_alignParentRight="true" 
      android:text="PTS" /> 
     <TextView 
      android:id="@+id/txt_rank_standings_final" 
      android:textSize="16sp" 
      android:textColor="#FFFFFF" 
      android:text="10" 
      android:layout_marginTop="15dp" 
      android:layout_below="@+id/txt_rank_standings" 
      android:layout_alignParentStart="true" 
      android:layout_alignParentLeft="true" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 
     <TextView 
      android:id="@+id/txt_name_standings_final" 
      android:textSize="16sp" 
      android:text="العهد" 
      android:layout_below="@+id/txtteam" 
      android:layout_marginTop="15dp" 
      android:layout_toEndOf="@+id/txt_rank_standings_final" 
      android:layout_toRightOf="@+id/txt_rank_standings_final" 
      android:layout_marginLeft="15dp" 
      android:layout_marginStart="15dp" 
      android:textColor="#FFFFFF" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 
    <TextView 
     android:id="@+id/txt_played_standings_final" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginRight="20dp" 
     android:layout_marginEnd="20dp" 
     android:layout_marginTop="15dp" 
     android:textColor="@color/yellow" 
     android:layout_below="@+id/textView" 
     android:text="6" 
     android:layout_toLeftOf="@+id/txt_points_standings_final" 
     android:layout_toStartOf="@+id/txt_points_standings_final" 
     /> 

     <TextView 
      android:id="@+id/txt_points_standings_final" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginRight="20dp" 
      android:layout_marginEnd="20dp" 
      android:textColor="@color/yellow" 
      android:text="12" 
      android:layout_marginTop="15dp" 
      android:layout_below="@+id/txt_points_standings" 
      android:layout_alignParentEnd="true" 
      android:layout_alignParentRight="true" 
      /> 
</RelativeLayout> 
</android.support.design.widget.CoordinatorLayout> 

我加入這個單排佈局吹氣,但問題是我得到這樣的:

enter image description here

單行在可擴展列表視圖中重複3次。

那麼,我如何使這一行在expandablelistview內部是靜態的?

更新:

這是我的片段活動包含了expandablelistview:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/coordinatorLayout" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 


      <android.support.v4.widget.SwipeRefreshLayout 
       android:id="@+id/swipe_refresh" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       app:layout_behavior="@string/appbar_scrolling_view_behavior"> 
       <ExpandableListView 
        android:id="@+id/elv" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent"> 
       </ExpandableListView> 
      </android.support.v4.widget.SwipeRefreshLayout> 


</android.support.design.widget.CoordinatorLayout> 

這是自定義行佈局:

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout 
    android:padding="10dp" 
    android:id="@+id/relative_standings" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 


    <TextView 
     android:text="#" 
     android:id="@+id/txt_rank_standings" 
     android:textSize="16sp" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentLeft="true" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 
    <TextView 
     android:text="TEAM" 
     android:textSize="16sp" 
     android:layout_marginLeft="15dp" 
     android:layout_marginStart="15dp" 
     android:layout_toRightOf="@+id/txt_rank_standings" 
     android:layout_toEndOf="@+id/txt_rank_standings" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 
    <TextView 
     android:id="@+id/textView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginRight="15dp" 
     android:textSize="16sp" 
     android:layout_marginEnd="15dp" 
     android:layout_toLeftOf="@+id/txt_points_standings" 
     android:layout_toStartOf="@+id/txt_points_standings" 
     android:text="P" /> 

    <TextView 
     android:id="@+id/txt_points_standings" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginRight="15dp" 
     android:textSize="16sp" 
     android:layout_marginEnd="15dp" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentRight="true" 
     android:text="PTS" /> 
</RelativeLayout> 

更新:

當我加入它的工作頭部佈局,但第一個子行被刪除,因爲這一點PIC顯示:

enter image description here

回答

1

看看這篇文章是由步說明了一步如何做到這一點 - https://robusttechhouse.com/how-to-add-header-footer-to-expandablelistview-childview/

爲了創建與子頭可擴展列表視圖查看,您將需要四個XML佈局文件。

  1. 含有ExpandableListView
  2. 該組項目佈局
  3. 的子項佈局
  4. 子視圖的標頭中的主要佈局。

訣竅是讓第一行設置爲一個標題:

public View getChildView(int groupPosition, int childPosition, boolean b, View view, ViewGroup viewGroup) { 
    ParentObject currentParent = getGroup(groupPosition); 
    LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    //The first row is used as header 
    if(childPosition == 0){ 
     view = inflater.inflate(R.layout.child_header, null); 
     TextView txtHeader = (TextView)view.findViewById(R.id.txtHeader); 
     txtHeader.setText(currentParent.textToHeader); 
    } 

    //Fix the prior out of bound exception 
    if(childPosition > 0 &&* childPosition < getChildrenCount(groupPosition) - 1){ 
     ChildObject currentChild = getChild(groupPosition, childPosition - 1); 
     view = inflater.inflate(R.layout.child_row, null); 

     //Set your fields for the header here... i.e 
     TextView txtChildName = (TextView)view.findViewById(R.id.txtChildName); 
     TextView txtChildAge = (TextView)view.findViewById(R.id.txtChildAge); 
    } 

    return view; 
} 

然後增加自定義適配器的getChildrenCount()回報由1,以適應我們正在使用的報頭中的一個。就像這樣:

@override 
public int getChildrenCount(int i){ 
    return yourModel.get(i).childObjects.size() + 1; 
} 

佈局保持它完全

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity"> 

    <ExpandableListView 
     android:id="@+id/elv" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"></ExpandableListView> 

</RelativeLayout> 

佈局父行

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:background="@color/parent_background" 
    android:paddingLeft="@dimen/padding_left" 
    android:layout_margin="5dp" 
    android:layout_height="match_parent"> 
    <TextView 
     android:id="@+id/txtMother" 
     android:layout_marginTop="10dp" 
     android:textStyle="bold" 
     android:layout_marginBottom="5dp" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 
    <TextView 
     android:id="@+id/txtFather" 
     android:layout_marginBottom="10dp" 
     android:textStyle="bold" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 
</LinearLayout> 

佈局爲子行

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:background="@color/child_background" 
    android:paddingLeft="@dimen/padding_left" 
    android:layout_height="match_parent"> 
    <TextView 
     android:id="@+id/txtChildName" 
     android:textColor="@android:color/holo_orange_dark" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="10dp"/> 
    <TextView 
     android:id="@+id/txtChildAge" 
     android:textColor="@android:color/holo_orange_dark" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="10dp"/> 
</LinearLayout> 

佈局頁眉

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="50dp" 
    android:background="@color/hf_background" 
    android:paddingLeft="@dimen/padding_left"> 
<TextView 
    android:id="@+id/txtHeader" 
    android:textColor="@android:color/holo_green_light" 
    android:layout_width="match_parent" 
    android:gravity="center_vertical" 
    android:textStyle="bold" 
    android:text="Header" 
    android:layout_height="50dp" /> 
</LinearLayout> 
+0

THX大雁我現在就試試 –

+0

超快速,準確,可靠的答案! 非常感謝親愛的@Dayan –

+0

@MahdiHraybi非常歡迎 – Dayan