2012-01-24 20 views
0

参照下面的截图,ListView由3个TextView组成。列表值在方向更改时被更改

根据第3个TextView的值,将相应颜色分配给第3个TextView的文本。如果值> 0

2.)红色如果值<如果值= 0(缺省)

下列代码段是内部使用0

3.)白色

即1)绿色一个适配器。

if (Float.parseFloat(map.get(RecentChg_COLUMN)) > 0) { 
      holder.tvRecentChg.setTextColor(Color.GREEN); 
     } 

else if (Float.parseFloat(map.get(RecentChg_COLUMN)) < 0) { 
      holder.tvRecentChg.setTextColor(Color.RED); 
     } 

第1个屏幕显示正确的输出。

但是在方向改变时,输出如第二个屏幕所示。

允许集中SHARIABEES,为此值= 0.0

最初,它出现在白色,但在取向变化它的颜色变为红色。

我不知道为什么它可能会发生。

任何建议,欢迎....

screen

+1

'请注意,如果值大于0或<0,一切正常。问题出现时,值= 0嗯,为什么,哦为什么....因为你不设置颜色,当值为0 ...并且你不知道listview优化,即使你使用“持有人模式”(复制粘贴编程ftw,呵呵) – Selvin

+0

感谢您的建议,但你是什么意思的'listview优化'。我对android开发很陌生,所以我不知道它。 – GAMA

+1

http://www.google.com/events/io/2010/sessions/world-of-listview-android.html ...简单地说... lv不会为evry行创建行视图... lv仅创建可见的行+更多,并重用它...所以它可能会得到行,以前是“红色”或“绿色”,这就是为什么你也应该添加代码的价值== 0 – Selvin

回答

4

设置的其他部分也值为0

if (Float.parseFloat(map.get(RecentChg_COLUMN)) > 0) { 
     holder.tvRecentChg.setTextColor(Color.GREEN); 
    } 

else if (Float.parseFloat(map.get(RecentChg_COLUMN)) < 0) { 
     holder.tvRecentChg.setTextColor(Color.RED); 
    } 
else if (Float.parseFloat(map.get(RecentChg_COLUMN)) == 0) { 
     holder.tvRecentChg.setTextColor(Color.WHITE); 
    } 

,并在你的标签AndroidManifest.xml文件中设置此

<activity android:name=".HomeActivity" android:label="@string/app_name" android:configChanges="orientation"> 
+0

我已经完成了第二部分,但补充说第三个条件为我做了诀窍。但**为什么**必须完成? – GAMA

+2

因为个别列表条目的视图被android框架重用。通过这种方式,您可以使用大量条目(> 1000)快速滚动列表。但是,价格是因为你不能假设你现在正在填充的列表条目处于默认状态。 –

+0

好的。非常感谢 ! – GAMA