2016-12-27 91 views
0

我的应用程序中有这种奇怪的现象。我正在使用下面列表中的代码来用计数器的值填充TextView。每次视图刷新计数器值的两倍,我在每次循环后都将计数器设置为0,但似乎不起作用。getView()int每次加载都会加倍

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View itemView = convertView; 
    if (itemView == null) { 
     itemView = inflater.inflate(R.layout.layouttitle, container, false); 
    } 
    for (myStruct singleItem : myData) { 
     counter++; 
    } 
    TextView totalsText = (TextView) itemView.findViewById(R.id.myTotalsText); 
    totalsText.setText("" + counter); 
    counter++; 
} 
+0

getView方法将在设备上创建新视图时调用evey时间。不要在getview方法中添加计数器,它永远不会给你想要的输出 –

+0

你能解释你想通过使用计数器变量来实现什么 – Rahul

回答

3

getView()适配器的方法称为多次,也不能保证它得到了多少次调用,所以最好不要使用此方法对于任何计算或来回任何其他的任务,是有关项目的数量你的ListView。

为什么counter是一个全局变量,你能解释一下吗?

+1

是的,一般原则 - 一个名称以'get'开头的方法不应该改变可见的内部状态你叫它的对象。 –

+0

是啊同意@DavidWallace,即使你试图更新/更改getView()中的Adapter对象可能会导致问题。 – Rahul

+0

所以在一个get中显示并且只在适配器级别改变。我想在我的视图中添加一个总节,最好的方法是什么,我正在考虑将其存储在数据库或数组中。 – user3175140

相关问题