2013-03-18 1 views
0

내 안드로이드 앱에서 SQLite 데이터베이스의 일부 데이터를 읽고 listview에 표시하려고했습니다.Cusror 어댑터를 사용하는 Listview는 아무 것도 표시하지 않습니다.

ListView listContent; 
SQLiteAdapterno nadapter; 
public void onCreate(Bundle savedInstanceState) 
{ 
super.onCreate(savedInstanceState); 
setContentView(R.layout.ofrnumber); 
listContent=(ListView)findViewById(R.id.listView1); 
nadapter=new SQLiteAdapterno(this); 
nadapter.openToRead(); 
Cursor c=nadapter.queueAll(); 
String[] from = new String[]{SQLiteAdapterno.KEY_ID, SQLiteAdapterno.KEY_RCODE, SQLiteAdapterno.KEY_RNAME,SQLiteAdapterno.KEY_OFNO}; 
int[] to = new int[]{R.id.id,R.id.text1,android.R.id.text2,android.R.id.text2}; 
SimpleCursorAdapter cursorAdapter =new SimpleCursorAdapter(this, R.layout.row,c, from, to); 
listContent.setAdapter(cursorAdapter); 
} 

SQLiteAdapterno : 나는 결과를 발견하지 않았다

public class SQLiteAdapterno { 

public static final String MYDATABASE_NAME2 = "MY_DATABASEOFRN"; 
public static final String MYDATABASE_TABLE2 = "MY_OFFERNO"; 
public static final int MYDATABASE_VERSION = 1; 
public static final String KEY_RCODE = "rcode"; 
public static final String KEY_OFNO = "ofno"; 
public static final String KEY_RNAME = "rname"; 
public static final String KEY_ID = "_id"; 

private static final String SCRIPT_CREATE_DATABASE1 = 
      "create table " + MYDATABASE_TABLE2 + " (" 
      + KEY_ID +" integer primary key autoincrement, " 
      + KEY_RCODE + " text, " 
      + KEY_RNAME + " text, " 
      + KEY_OFNO + " text);"; 

private SQLiteHelper sqLiteHelper; 
private SQLiteDatabase sqLiteDatabase; 
private Context context; 
public SQLiteAdapterno(Context c) 
{ 
    context=c; 
} 
public SQLiteAdapterno openToRead() throws android.database.SQLException { 
     sqLiteHelper = new SQLiteHelper(context, MYDATABASE_NAME2, null, MYDATABASE_VERSION); 
     sqLiteDatabase = sqLiteHelper.getReadableDatabase(); 
     return this; 
    } 
public SQLiteAdapterno openToWrite() throws android.database.SQLException { 
     sqLiteHelper = new SQLiteHelper(context, MYDATABASE_NAME2, null, MYDATABASE_VERSION); 
     sqLiteDatabase = sqLiteHelper.getWritableDatabase(); 
     return this; 
    } 
public void close(){ 
     sqLiteHelper.close(); 
    } 
public long insert(String rcode, String rname, String ofno){ 
     ContentValues contentValues = new ContentValues(); 
     contentValues.put(KEY_RCODE, rcode); 
     contentValues.put(KEY_RNAME, rname); 
     contentValues.put(KEY_OFNO, ofno); 
     return sqLiteDatabase.insert(MYDATABASE_TABLE2, null, contentValues); 
    } 
public Cursor queueAll(){ 
     String[] columns = new String[]{KEY_ID, KEY_RCODE, KEY_RNAME, KEY_OFNO}; 
     Cursor cursor = sqLiteDatabase.query(MYDATABASE_TABLE2, columns, 
     null, null, null, null, null); 
     return cursor; 
    } 
public int deleteAll(){ 
     return sqLiteDatabase.delete(MYDATABASE_TABLE2, null, null); 
    } 

이, 그것은 목록보기에서 모든 항목을 표시하지 않습니다 여기 내 코드입니다. 누군가이 코드의 실수와 해결 방법을 말할 수 있습니까?

+0

커서에 무언가가 포함되어 있습니까? 예를 들어 로그 c.getCount() –

+0

당신은 c.getCount(), from.size, to.size를 출력 할 수 있습니까? – Harshid

+0

예, 확인하지 않았습니다. 커서가 비어 있습니다. –

답변

0

코드가 좋아 보인다. 대부분 Cursor이 비어있을 가능성이 큽니다. 간단한 조건을 추가하려고 :

토스트가 표시됩니다
Cursor c = nadapter.queueAll(); 
if (c != null && c.getCount() > 0) { 
    // set Adapter 
} 
else { 
    Toast.makeText(this, "Cursor is empty", Toast.LENGTH_SHORT).show(); 
} 

, 당신의 getAll() 방법은 데이터를 반환하지 않습니다.

public Cursor queueAll(){ 
    String[] columns = new String[] {KEY_ID, KEY_RCODE, KEY_RNAME, KEY_OFNO}; 
    Cursor cursor = sqLiteDatabase.query(MYDATABASE_TABLE2, columns, 
     null, null, null, null, null); 
    return cursor; 
} 

여기에 문제가 있습니다.

+0

예, 죄송합니다. 커서가 비어 있습니다. –

+0

@ ling.s oks. 이제 고칠 수 있습니다. 대답을받을 수 있습니까? 덕분에 – Sajmon

+0

내가 1more 의심, int 변수는 무엇입니까? 나는 이해하지 못했다. 결과를 제대로 표시하지 못했다. 하이 하이만을 표시합니다. 하지만 내 코드에서 hai를 사용하지 않았다. –