簡體   English   中英

如何在expandablelistview中添加靜態行

[英]How to add a static row in 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">


    <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>

我將這一行添加到布局充氣機中,但問題是我得到了以下信息:

在此處輸入圖片說明

在expandablelist視圖中,單行被重復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>

更新:

當我添加頁眉布局時,它可以工作,但是刪除了第一個子行,如下圖所示:

在此處輸入圖片說明

看看這篇文章,其中包含有關如何做到這一點的逐步說明-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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM