首页 > 解决方案 > 能见度“自行”改变

问题描述

我有ListView一个Adapterthat extends BaseAdapter。在 - 的里面

public View getView(final int position, View view, ViewGroup parent) {...}

我附上clickListener这样的view

view.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        final LinearLayout llMatchInfo = v.findViewById(R.id.matchInfo);
        if (llMatchInfo == null) return;
        llMatchInfo.setVisibility(llMatchInfo.getVisibility() == View.GONE ? View.VISIBLE : View.GONE);
    }
});

然后我让这个用户抱怨说,当他单击一个元素时,它llMatchInfo会在一瞬间可见,然后又消失了。

这是matchInfo视图可见性改变的唯一地方。

谁能帮我弄清楚为什么会这样?

提前致谢

这是我的 ListView 中每个项目的外部 XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center_vertical"
    android:orientation="horizontal"
    android:paddingEnd="5dp">

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

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

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

            ...

        </LinearLayout>

        <include
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            layout="@layout/match_info"
            android:id="@+id/matchInfo" />

    </LinearLayout>

</LinearLayout>

以及实际 matchInfo 的内部 XML(我想要切换可见性的部分):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:visibility="gone">

    <LinearLayout
        android:id="@+id/team_logos"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:orientation="horizontal">

        <ImageView
        ... />

        <ImageView
        ... />
    </LinearLayout>

    <TextView
        ... />

    <TextView
        ... />

    <TextView
        ... />

    <LinearLayout
        android:id="@+id/tv_channels"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:orientation="horizontal"
        android:visibility="visible">

        <ImageView
        ... />

        <ImageView
        ... />
    </LinearLayout>

</LinearLayout>

标签: androidlistviewandroid-listview

解决方案


推荐阅读