【问题标题】:Dynamically update list element height in ListView动态更新 ListView 中的列表元素高度
【发布时间】:2010-12-11 21:56:12
【问题描述】:

我有一个清单。 当您单击元素时,它会被选中,并且应该垂直扩展以显示更多数据。

我正在尝试通过添加到每个元素的布局“详细信息”视图来实现这一点,该视图被默认隐藏并设置为 VISIBLE onClick。

唯一的问题是元素的高度没有改变。 如果我这样尝试:

                    holder.line_view
                        .setLayoutParams(new LinearLayout.LayoutParams(
                                LayoutParams.FILL_PARENT, dip(
                                        convertView.getContext(), 30)));

然后我得到未知的异常。 只是

holder.details_pane.setVisibility(View.VISIBLE);

不起作用,大小没有改变。

请指教。


布局:

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/line_view">
<TextView
    android:id="@+id/desc"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:text="Description" />
<TextView
    android:text="LALALA"
    android:id="@+id/detailed_desc"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />

在适配器中我尝试:

 @Override
            public View getView(int position, View convertView, ViewGroup parent) {
...
switch (getItemViewType(position)) {
case TYPE_ITEM_EXPANDED:
                    holder.details_pane.setVisibility(View.VISIBLE);
...
case TYPE_ITEM_NORMAL:
                    holder.details_pane.setVisibility(View.GONE);
                }

【问题讨论】:

    标签: android listview android-layout


    【解决方案1】:

    “不起作用,大小没有改变”

    如果您允许旋转视图,可以尝试以下方法:让您的视图重绘自身并查看行是否更大。

    您可能只需要使列表视图无效,以便它重绘。可能会使该行无效。

    也许它甚至像调用 notifyDataSetChanged() 一样简单;在您的自定义列表视图适配器上

    【讨论】:

    • 对,所有的事情都要做——正在调用 notifyDataSetChanged();
    【解决方案2】:

    我不知道你的代码问题。但你应该试试这个

    com.android.widget.ExpandableListView
    com.android.widget.ExpandableListAdapter
    

    这是根据您的要求设计的,并随操作系统一起提供

    【讨论】:

    • 谢谢,但我需要有任意深度的层次结构 - ExpandableView 只有 2 个级别。
    猜你喜欢
    • 2012-01-16
    • 2020-10-21
    • 2018-01-02
    • 2016-03-11
    • 1970-01-01
    • 2012-06-14
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多