那种方法有多慢,真的吗?我有一个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);
}
现在,所有这一切都很好,并且没有错误。视图相应地切换。但问题是,为什么用户界面如此缓慢?我已经尝试逐行注释掉代码,很明显两个setVisibility()方法都应该受到指责。它总是那么慢,有没有办法让我加快速度?
另外,我不能简单地切换RelativeLayout包装器的可见性,我需要能够分别控制两个内部视图。以上只是示例代码,但它与我目前的代码非常相似。
帮助表示赞赏!
谢谢, 丽
答案 0 :(得分:0)
我不确定,但如果您的列表中有许多元素,那么系统需要处理所有元素并使它们可见。这就是为什么它需要花费这么多时间的原因。您是否尝试过使用GONE而不是使用INVISIBLE?
答案 1 :(得分:-4)
而不是View.VISIBLE
尝试使用View.VISIBLE
和View.GONE
。