2012-12-20 47 views
0
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++; 
     } 
    } 

所以,我想只有计数变量后,访问ArrayList中,这就是为什么: -数据库插入不会发生

if(i++<count) 
    continue; 

但是,当我在“插入”插入一个破发点行,它不工作。该行根本没有执行,因此数据没有被插入到数据库中。出了什么问题?

'值'为空。

+0

continue语句跳过for,while或do-while循环的当前迭代。所以如果(i ++ rajpara

+0

你应该调试和检查'count','arrlist.size()'和' mapDefect.size()'。请注意,当您的索引变量i大于'count',但小于'arrlist.size()'时,您的插入逻辑将仅跳过该(狭窄?)窗口。 – Perception

+0

计数在哪里设置?无论如何这个代码看起来有点破旧。 –

回答

1

你的代码是有点难以理解 以下是我的建议

1.为什么你不就i =在for循环之前计数。这将节省大量重复

2.你我可例如两次加

if(i++ < count) //suppose this condition is false 

即使条件是假的我++发生任何你我就会增一则内部

if(i < arrlst.size()) { 
... 
i++;// It increments i again 
} 

逻辑变得错在这里

+0

我希望我能够增加数到无所事事。在此之后,我将增加到最后。 i和count的逻辑似乎是正确的。在调试时,控制器会在正确的时间进/出。但是,如果(i

0

为什么你在if条件下你的i还有增量?将会发生的是,每次迭代你都会增加2。也许你想要做的就是在循环之前先将你的i初始化为1,然后你可以在if条件中删除i中的++,或者你可以在循环结束时删除i中的++。

+0

但它没有增加2.它每次正确递增1。当条件失败时,它开始跳过continue语句并开始检查下一个条件。在这种情况下,直到i ++的语句全部被跳过。 –

0

没有看到count很难知道问题的解决方案。我的猜测是i ++总是小于count,因此导致循环体的其余部分被跳过并且下一个元素被检查。你很可能想要。 if(i++>count)...

而且这是一个很好的做法是使用大括号{ }一行if

+0

nope,计数是正确的,这是之前设置的。我想跳过迭代直到'count'th数字。之后我想开始从arraylist和mapentry中提取值。 –

+0

@PramodSetlur你可以发布完整的方法代码吗?我们无法知道计数是多少。 – Woot4Moo

0

问题解决了。 我用if和else。在其他地区,我增加了我的变量,它工作得很好。

if(i<count) 
{ 
    .. 
} 
else 
    i++; 
相关问题