如何在每个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">
<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>
我将这一行添加到布局inflater但问题是我得到这样的东西:
在expandablelistview中,单行重复了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>
更新:
当我添加标题布局时,它可以工作,但第一个子行被删除了,如图所示:
答案 0 :(得分:2)
看看这篇有关如何实现这一目标的分步说明 - https://robusttechhouse.com/how-to-add-header-footer-to-expandablelistview-childview/
为了在子视图中创建带有标题的可扩展列表视图,您将需要四个XML布局文件。
ExpandableListView
诀窍是获取第一行并将其设置为标题:
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>