2012-02-23 6 views
0

모든 listView에 숫자를 추가하고 싶습니다.이 숫자는 SQLite에서 가져옵니다. for 루프를 사용하여 추가하고 커서를 사용하여 가져옵니다. 문제는 내가 마지막 하나를 제외하고 그 중 하나를 삭제할 때 for 루프가 작동하지 않는다는 것입니다. 커서에 "isNull"함수가 있다는 것을 알았습니다. 사용하고 싶지만 작동하지 않습니다.Android 커서 및 listView에 관한 오류

int itemNum=doListlist.getCount(); 
     for(int i = 0; i < itemNum; i++){ 
      if(cursor.isNull(i+1)==false){ 
       float num=Float.parseFloat(listsDbAdapter.fetchData(tableName, i+1).getString(3)); 
       float price=Float.parseFloat(listsDbAdapter.fetchData(tableName, i+1).getString(5)); 
       total+=num*price; 
      } 
      else { 
      itemNum++; 
      } 
     }  

항상 오류가있는 이유를 알고 있다면 알려주세요. 감사합니다.

+0

커서 중 하나를 삭제하면 커서가 무효화되는 것 같습니다. 비록 내가 당신이 무엇을하려하는지 완전히 이해하고 있는지 확신 할 수는 없지만 어쩌면 당신은 여기에 커서를 적절히 사용하는 방법을 볼 수 있습니다 : http://www.higherpass.com/Android/Tutorials/Accessing-Data- With-Android-Cursors/2/ – Tim

+0

나는 단지 ID가 데이터베이스에 존재한다는 것을 알고 싶거나 삭제되어 null이 될 것입니다 (null이 될 것 같습니다). – user1032314

답변

0

커서는 데이터베이스 테이블의 일부를 나타내는 개체로 인식 할 수 있습니다 (이 메모리 표현은 query 메서드의 매개 변수에 따라 작성 됨). 따라서 커서는 열 수 (query 메서드에서이 열을 정의 함)와이 테이블의 행 수가있는 표입니다.

커서로 작업 할 때 이러한 행을 순차적으로 읽습니다. 이 행에서 열 값을 사용하여 작업합니다.

cursor.isNull(i+1)은 현재 행에 i+1 열을 고려하고이 열의 값이 null인지 확인합니다. 그래서 for 루프가 적절하지 않다고 생각합니다. 커서의 moveToNext() 메소드를 사용하여 커서를 탐색해야합니다.

+0

완벽한 답변 주셔서 감사합니다. 나는 내가 그것을 더 잘 안다라고 생각한다. 그리고 나는 그것을 다시 시험해 볼 것이다. – user1032314

0

시도해보십시오. ' int itemNum = doListlist.getCount(); if (cursor! = null) {

 if (cursor.moveToFirst()) { 



    for(int i = 0; i < itemNum; i++){ 

      float num=Float.parseFloat(listsDbAdapter.fetchData(tableName, i+1).getString(3)); 
      float price=Float.parseFloat(listsDbAdapter.fetchData(tableName, i+1).getString(5)); 


cursor.moveToNext(); 
      } 
     } 
    } 

    cursor.close(); 
+0

저에게 대답 해 주셔서 감사합니다. 나는이 질문에 대한 진정한 이유가 있다고 생각한다. – user1032314