android:ListView中的自定义(复合)控件

时间:2010-10-20 09:56:13

标签: android listview

我对ListView有一个奇怪的问题: 我已经创建了复合控件

public class TopicControl extends LinearLayout
....

<merge xmlns:android="http://schemas.android.com/apk/res/android">
    <LinearLayout
        android:id="@+id/llTopicHeader"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
    >
        <Button 
            android:id="@+id/btnTopicTitle"
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content"
            android:tag="btnTopicTitle"
        ></Button>
        <LinearLayout
            android:id="@+id/llTopicBar"
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content"
            android:visibility="invisible"
            android:tag="llTopicBar"
        >
            <Button
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:background="@drawable/bar_calendar"
            ></Button>
            <Button
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:background="@drawable/bar_person"
            ></Button>
        </LinearLayout>
    </LinearLayout>
    <TextView 
        android:id="@+id/tvTopicText"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
    ></TextView>
</merge>

在该控件中,我在btnTopicTitle点击上实现了隐藏/显示llTopicBar。

问题在于,当我将该组件添加到ListView时,按下btnTopicTitle后,llTopicBar不仅对于单击的项目,而且对于每个 second LstViewItem都可见。

添加“父”验证后,llTopicBar对于ListView中的每个 4th 项都会显示。

Override
public void onClick(View v)
{
    if (v.getParent().getParent() == getThis())
    llTopicBar.setVisibility(llTopicBar.getVisibility() == View.VISIBLE ? View.INVISIBLE : View.VISIBLE);
}

你可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

问题在于在滚动期间重复使用ListView的视图。