int i=0;
ContentValues values = null;
for ( SortedMap.Entry<Integer, String> entry : mapDefect.entrySet() ) {
if( i++ < count )
continue;
if( i < arrlst.size() ) {
values = new ContentValues();
Log.d("MAP", "Id :"+entry.getKey()+"Des :"+entry.getValue()+"Co :"+ arrlst.get(i));
values.put( MARKER_COORD, arrlst.get( i ) );
values.put( MARKER_ID, entry.getKey() );
values.put( DEFECT_DESCRIPTION, entry.getValue() );
values.put( IMAGE_ID_F, imageID + 1 );
Log.d( "Err", "in insertNewDefectsDescription" );
long rowId = db.insert( TABLE_DEFECTS, null, values );
long rowId1 = rowId;
i++;
}
}
所以,我想在count变量之后访问arraylist,这就是为什么: -
if(i++<count)
continue;
但是,当我在'insert'行插入一个断点时,它不起作用。该行根本不执行,因此数据未插入数据库。出了什么问题?
'values'为空。
答案 0 :(得分:1)
您的代码有点难以理解 以下是我的建议
1.你为什么不在for循环之前做i = count。它可以节省大量的迭代次数
<强> 2。您的i可能会增加两次,例如
if( i++ < count ) //suppose this condition is false
即使条件为假i ++也会发生任何你的增加,然后在
内if( i < arrlst.size() ) {
...
i++;// It increments i again
}
这里的逻辑错误
答案 1 :(得分:0)
为什么在if条件下你的i也有增量?会发生什么,每次迭代你的i增加2。也许你想要做的是在循环之前首先将你的i初始化为1,然后你可以在if条件下删除你的i中的++,或者你可以在循环结束时删除你的i中的++。 / p>
答案 2 :(得分:0)
没有看到count
,就很难知道问题解决方案。我的猜测是i ++总是小于count,因此导致循环体的其余部分被跳过并且下一个元素被检查。你最想要的。 if(i++>count)...
此外,对一行{ }
块使用花括号if
是一个好习惯
答案 3 :(得分:0)
问题解决了。 我用if if else。在else区域,我增加了i变量,它工作正常。
if(i<count)
{
..
}
else
i++;