【问题标题】:How to convert a GridView to an ExpandableListView如何将 GridView 转换为 ExpandableListView
【发布时间】:2015-09-15 11:43:17
【问题描述】:

我在我的项目中使用了 GridView,并包含了 ViewHolder。
现在,客户希望使用 ExpandableListView 显示数据,因为他只想显示标题,并且当用户单击标题时,它会在其下方显示子项。

  • 之前没有经验,我想知道是否可以在代码中轻松地从 GridView 更改为 ExpandableListView。
    请注意,我还在 Grid 中包含了文本搜索。如果我切换到 ExpandableListView,它仍然可用吗?
  • 如果上述是可能的,任何人都可以帮助我如何实现它。

Grid行xml如下

 <?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:paddingLeft="8dip"
    android:paddingRight="4dip">

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_weight="0.8">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="#FFFFFF"
                android:typeface="sans"
                android:textSize="13sp"
                android:textStyle="bold"
                android:id="@+id/placeName"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="#88FFFFFF"
                android:typeface="sans"
                android:textSize="13sp"
                android:textStyle="bold"
                android:id="@+id/theme"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"                
                android:textStyle="bold"
                android:id="@+id/Title"/>

            <TextView
                android:id="@+id/Details"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="1dip"
                />

            <TextView
                android:id="@+id/scheduleDays"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="bottom"
                android:layout_gravity="bottom"
                android:layout_marginRight="5dip"
                android:layout_marginTop="7dip"                
                android:text="Family, Friends, Relatives, Grand-Parents"                
                android:textStyle="bold"/>

            <TextView
                android:id="@+id/Date"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="bottom"
                android:layout_gravity="right"
                android:layout_marginRight="5dip"
                />

        </LinearLayout>

        <LinearLayout
            android:id="@+id/rightLayout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:orientation="vertical"
            android:minWidth="60dp"
            android:layout_weight="0.2">

            <ImageView
                android:id="@+id/starButton"
                android:layout_width="40dp"
                android:layout_gravity="right"
                android:layout_marginRight="5dip"
                android:layout_height="40dp"
                android:background="#00FFFFFF"
                android:src="@drawable/Favourite"/>

 <ImageView
                android:id="@+id/showMeButton"
                android:layout_width="40dp"
                android:layout_gravity="right"
                android:layout_marginRight="15dip"
                android:src="@drawable/showMe"/>
            </LinearLayout>

    </LinearLayout>

  <View
    android:id="@+id/separator"
    android:layout_marginTop="5dip"
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="#33000000" />

</LinearLayout>

使用 ListView,我想将 PlaceName、Favorite Button 和 ShowMe Button 显示为标题,其余的显示为子项。

【问题讨论】:

  • 在xml中设置numColumns=1属性
  • @rajanks,numcolumns 已经是1,但是,我需要隐藏子数据,numColumns=1,同时显示标题和子数据。我希望它的行为与 ExpandableListView 完全相同。执行 numColumns=1 时,没有什么像 Header - Child

标签: android listview gridview


【解决方案1】:

您可以将 Expandable ListView 集成到 Layout 中,例如 LinearLayout。 为此,请在您的活动的 layout.xml 中更改布局类型

要将数据发送到 ListView,您需要使用 BaseExpandableListAdapter 从数组或数据库中提取内容。

layout.xml 示例

<LinearLayout .... >

  <ExpandableListView
   .... >
  </ExpandableListView>

</LinearLayout> 

【讨论】:

    【解决方案2】:

    你能显示你的xml文件吗?可以实现的方法有很多。

    • 比如将布局容器从网格布局更改为线性布局

    在你的适配器中

    并在 onCreate 中设置您的视图

    recycler.setHasFixedSize(true);
        final LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
        recycler.setLayoutManager(layoutManager);
        adapter = new Adapter(getActivity());
        recycler.setAdapter(adapter);
    

    【讨论】:

    • 首先你说网格到线性,现在你说的是可扩展列表视图。
    • 问题是如何将 GridView 转换为 ExpandableListView?
    猜你喜欢
    • 2015-05-02
    • 1970-01-01
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    • 2020-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多