폰에 있는 연락처를 받아서 새로운 DB를 생성하여 저장하고 리스트 뷰로 출력하는 앱을 만드려고 합니다.
연락처를 받아와서 리스트뷰에 출력하는건 됩니다만
연락처를 DB에 저장하는 부분에서 응답이 없어서 답답한 마음에 올려봅니다.
public void insert(Cursor cursor){
ContentValues cv = new ContentValues();
mDB.beginTransaction();
if(cursor.moveToFirst()){
while(cursor.moveToLast())
cv.put(NAME, cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)));
cv.put(PHONENUMBER, cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));
cursor.moveToNext();
}
mDB.setTransactionSuccessful();
mDB.endTransaction();
mDB.insert("phonedb", null, cv);
}
이부분이 insert부분 입니다. 인자로 cursor를 받아서 ContentValues로 put메소드를 이용해 하나씩 넣고 insert과정에서 시스템이 멈춰 버립니다. 연락처가 100개정도 되는데 한번에 insert하여 시스템이 먹통이 되는지 모르겠지만 해결 방안이 있을지
고수님들 알려주세요 부탁드려요!!
while(cursor.moveToLast())
맨끝으로 이동하는 이유는 뭐죠? 이거 무한루프 도는거 아닌가요?
while문 조건에는 EOF가 아닌경우에 insert해야 할거 같은데요...
굳이 계속 moveToLast로 이동해서 마지막것만 주구장창 insert하는 이유를 모르겠네요... 더구나 끝나지도 않구요...