0

这种方法有多慢,真的吗?我有一个 ListView 和一个自定义适配器,它使用以下示例 XML 填充我的列表:

<RelativeLayout>
    <TextView />
    <View />
    <TextView />
    <RelativeLayout>
        <View android:id="@+id/1" />      <--Take note of this one
        <TextView android:id="@+id/2" />  <--And this one too
    </RelativeLayout>
</RelativeLayout>

ListView 本身运行平稳,滚动良好,加载不是真正的问题。ListView 的功能包括在单击行时切换两个嵌套视图(我标记为要注意的视图)的可见性;默认情况下,它们使用以下属性设置:

android:visibility="gone"

我所做的是检查两个视图的可见性并相应地切换它们的可见性状态,例如:

View v = findViewById(R.id.1);
TextView tv = (TextView) findViewById(R.id.2);

if (v.getVisibility() == View.VISIBLE) {
    v.setVisibility(View.GONE);
    tv.setVisibility(View.GONE);
} else {
    v.setVisibility(View.VISIBLE);
    tv.setVisibility(View.VISIBLE);
}

现在,这一切都很好,并且没有错误。视图会相应地切换。但这里的问题是,为什么 UI 这么慢?我试过逐行注释掉代码,很明显这两个 setVisibility() 方法是罪魁祸首。它总是那么慢吗,有没有办法可以加快速度?

此外,我不能简单地切换 RelativeLayout 包装器的可见性,我需要能够分别控制两个内部视图。以上只是示例代码,但它与我目前拥有的非常相似。

帮助表示赞赏!

谢谢,雷

4

2 回答 2

2

我不确定,但如果你的列表中有很多元素,那么系统需要处理所有元素并使它们可见。这就是为什么它可能需要这么多时间的原因。您是否尝试过使用 GONE 而不是使用 INVISIBLE?

于 2013-06-14T03:17:04.003 回答
-4

而不是View.VISIBLE尝试使用View.VISIBLEand View.GONE

于 2013-06-14T03:16:20.407 回答