所以我有此代码生成的表,并且我一直在尝试使此代码正常工作,基本上我想知道该单词有多少行,以便以后可以使用该数量的元素,此代码就像不工作也许你们可以看到错误? 代码:
public int UntilArraySearch (String filtro){
int tope=0;
for(int i = 0;i<mTableLayout.getChildCount();i++){
if(data[i].productName.contains(filtro) || data[i].productCode.contains(filtro))
tope++;
}
return tope;
}
此错误弹出:
Caused by: java.lang.ArrayIndexOutOfBoundsException: length=52; index=52
每当我运行该函数时都会收到此错误
答案 0 :(得分:2)
仅当mTableLayout.getChildCount()
为<=
data.length
且似乎并非如此时,您的循环才有效,因为如果是这种情况,则{{1 }}不会超过i
的最大索引。
既然您要遍历data
,为什么不这样写循环:
data
检查这是否是预期的结果?
答案 1 :(得分:2)
如果要搜索data
,那么最好遍历data
数组的长度。无论您的视图(mTableLayout
)是否正确地反映了模型(data
),此操作都可以通过仅考虑模型来更好地将自身与视图隔离,这是通常遵循的良好做法。>
public int UntilArraySearch (String filtro){
int tope=0;
for(int i = 0;i<data.length;i++){
if(data[i].productName.contains(filtro) || data[i].productCode.contains(filtro))
tope++;
}
return tope;
}