ListView更改行

时间:2012-02-18 17:50:46

标签: android listview

这是ListView的每一行的布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/llRow"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >
<LinearLayout
        android:id="@+id/llClosed"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="horizontal" >

Stuff Inside

</LinearLayout>

<LinearLayout
        android:id="@+id/llOpen"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="horizontal" >

Stuff Inside

</LinearLayout>
</LinearLayout>

我的想法是当我点击ListView项时,它将 llClosed 设置为Gone llOpen 设置为Visible所以稍后通过一些动画我可以创建一个扩展的外观。

protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
                View open = v.findViewById(R.id.llOpen);
                View close = v.findViewById(R.id.llClosed);
                close.setVisibility(View.GONE);
        open.setVisibility(View.VISIBLE);
}

问题在于,当我点击第一行时,它不仅会更改第一行,还会更改另一行,第2行或第3行。什么可能导致这种情况?

已解决:如果我在列表适配器中执行llOpen.setVisibility(View.GONE),它将解决我的问题。

1 个答案:

答案 0 :(得分:0)

好吧,一个问题是你有两个具有相同ID android:id="@+id/llClosed"

的线性布局

布局中具有ID的所有元素都应具有唯一的元素。试试android:id="@+id/llClosed1"android:id="@+id/llClosed2"

我很抱歉,但我无法确定你想要完成什么,但看起来你可能想尝试expandablelistview课程。退房:

http://techdroid.kbeanie.com/2010/09/expandablelistview-on-android.html

http://about-android.blogspot.com/2010/04/steps-to-implement-expandablelistview.html