How to add this single row as static in every expandablelistview ?
this is my layout inflater :
<?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>
i added this single row to the layout inflater but the problem is i am getting something like this:
The single row is being repeated 3 times in the expandablelistview.
So, How do i make this row static inside the expandablelistview?
UPDATED:
This is my fragment activity which contains the 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>
This is the custom row layout:
<?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>
UPDATED:
When i added the header layout it works but the first child row is removed as this pic shows:
Take a look at this article that has step by step instructions on how to accomplish just that - https://robusttechhouse.com/how-to-add-header-footer-to-expandablelistview-childview/
In order to create an expandable list view with a header in the child view, you will need four XML layout files.
ExpandableListView
The trick is to get the first row and set it as a header:
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;
}
Then increase the Custom Adapter's getChildrenCount()
return by 1
, to accommodate for the one we are using for the header. Like this:
@override
public int getChildrenCount(int i){
return yourModel.get(i).childObjects.size() + 1;
}
Layout holding it altogether
<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>
Layout for the Parent Rows
<?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>
Layout for the Child Row
<?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>
Layout for the Header
<?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>
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.