2行のデータを持つ表の上にカーソルを置いて繰り返したいとします。私の最初の試みでした:カーソルisAfterLast()は、最後の行に達したときにtrueを返します。
c.moveToFirst();
while(!c.isAfterLast()){
//this code runs once
c.moveToNext();
}
しかし、デバッグの後、私は私が私のデータの最後の行が欠落していますことに気づきました。これは、mPos変数がカウンタのmCountに等しくなったときにwhileループが終了するためです。問題は以下のいずれかで上記のコードを置き換えた後に解決された:
c.moveToFirst();
do{
//this code runs twice
}while(c.moveToNext())
を本質的に第1の方法では、whileループは、第1未満1回実行されます。カーソルが最後の行を通過した後にisAfterLastがtrueを返すとは思われませんか?それはカーソルを移動 - moveToNext()
は(true
)次があることを意味boolean
を返すだけでなく、真の場合、その
あなたが最初のコードブロックでは、あなたが持っていたと確信している 'c.moveToNext()'のコードの最後の行として。 whileループの中で?両方とも本当に同じことをしてください。 –
あなたはru nデータ行が1つしかないカーソル上の最初のコードブロック?ループの本体がまったく実行されないようにしますか?つまり、c.isAfterLast()はc.moveToFirst()の呼び出しの直後にtrueを返しますか? – jason44107
その場合、最初のブロックを_empty_カーソルで実行するとどうなりますか?それは例外をスローしますか? – jason44107