2014-11-08 34 views
-2

我试图从TextViews中的Listitems中获得“求和”并计算总计(val1+val2+...+valn=total)如何计算在ListItems上的textviews中的值的“总和”

结构:ListView > listItem/RelativeLayout > TextView. 这些值来自自定义适配器。 *我知道我需要使用迭代器来计算listItem,并获得值,但我不知道如何调用listview的行。

+1

你为什么不从自定义适配器获得价值? – Chitrang 2014-11-08 18:01:43

+0

我会尝试一下,谢谢。 – oldkefka 2014-11-08 18:27:44

+0

...这比从字符串转换为数字更快。 – 2014-11-08 18:32:50

回答

1

由于ListView上的textView被回收,这意味着大部分/全部都是用户看到的,所以不能使用它们。

执行此操作的最佳方法是对正在使用的数据执行计算。

+0

你是对的,非常感谢你。 – oldkefka 2014-11-10 15:18:41

+0

是的,因为我认为你是ListView的新手,所以我强烈建议你观看“ListView世界”(它已经很陈旧了,但仍然非常有用),甚至可以观看新的RecyclerView讲座,据Google称,旨在替换ListView(他们称之为“ListView 2”)。 – 2014-11-10 16:47:03

+0

你说得对,我是使用“ListView”的新手。谢谢 – oldkefka 2014-11-10 17:38:26

0

您可以通过调用适配器并排队每个索引来访问列表视图的行。 假设 “myList中” 是你的清单:

for (int i = 0; i < myList.getCount(); i++){ 
    View v = myList.getAdapter().getView(i, null, null); 
    TextView txt = v.findViewById( *idOfYourTextView* ); 
    //Do something with the text 

}  

从引用:Iterate through ListView and get EditText-Field values

1

丑陋,但它的作品...

private int sumMyIntValues(ListView myList) { 
    int sum=0; 
    for (int i = 0; i < myList.getCount(); i++) { 
     View v = myList.getChildAt(i); 
     TextView myView = (TextView) v.findViewById(R.id.myView); 
     sum = sum + Integer.parseInt(myView.getText().toString()) 
    } 
    return sum; 
} 
+1

谢谢,最后我在适配器里面做了 – oldkefka 2014-11-10 15:18:16

+0

男人,它就像魔法一样工作。 – 2016-09-06 13:00:53

+0

你好吗oldkefka ??????????? – amyShamna 2017-11-09 10:56:13