관계형 데이터베이스의 데이터로 ListView를 채우려고합니다. 내가 성취하고자하는 것은 각 간호사에게 NURSE_TABLE과 그 간호사에게 할당 된 방 번호를 보여주는 것입니다. 결과적으로 두 개의 버튼을 보여주는 레이아웃과 빈 ListView가 생깁니다.다중 테이블 SQLite 데이터베이스가있는 ListView
데이터베이스를 작성하는 코드는 다음과 같습니다
는public void onCreate(SQLiteDatabase db) {
// create NURSE_TABLE
db.execSQL("CREATE TABLE " + NURSE_TABLE + " (" + KEY_NURSE_ROWID
+ " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_LNAME
+ " TEXT NOT NULL, " + KEY_FNAME + " TEXT NOT NULL, "
+ KEY_MI + " TEXT, " + KEY_EMAIL + " TEXT NOT NULL, "
+ KEY_PHONE_PRIMARY + " TEXT NOT NULL, "
+ KEY_PHONE_SECONDARY + " TEXT, " + KEY_FTE
+ " TEXT NOT NULL, " + KEY_DUTY_STATUS + " TEXT NOT NULL);");
// create ROOM_TABLE
db.execSQL("CREATE TABLE " + ROOM_TABLE + " (" + KEY_ROOM_ROWID
+ " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_TYPE_PATIENT
+ " TEXT, " + KEY_OCCUPIED + " TEXT NOT NULL, "
+ KEY_ROOM_NUMBER + " TEXT NOT NULL, "
+ KEY_ASSIGNED_NURSE + " INTEGER, "
+ " FOREIGN KEY (" + KEY_ASSIGNED_NURSE + ") REFERENCES "
+ NURSE_TABLE + " (" + KEY_NURSE_ROWID + "));");
} // onCreate
활동에 대한 코드는 다음과 같습니다
public Cursor getNurseRosterCursor (Context context) {
SQLiteQueryBuilder nurseQueryBuilder = new SQLiteQueryBuilder();
nurseQueryBuilder.setTables("NURSE_TABLE, ROOM_TABLE");
String[] returnedColumns = new String[] {
"Nurse_Table._id",
"Nurse_Table._dutyStatus",
"Nurse_Table._lName",
"Nurse_Table._FName",
"Nurse_Table._mi",
"Room_Table._id",
"Room_Table._roomNumber"};
Cursor nurseCursor = nurseQueryBuilder.query(sqldb, returnedColumns,
null, null, null, null, null);
return nurseCursor;
}
:
public void displayNurseRoster(){
ListView listView = (ListView) findViewById(R.id.list);
// int variables filled with NURSE_TABLE data
int[] to_nurseTable = new int[] {
// int list for data from NURSE_TABLE fields
R.id.rosterDutyStatus,
R.id.rosterListLname,
R.id.rosterListFname,
R.id.rosterListMI,
R.id.rosterListID,
// int list for data from ROOM_ROWID fields
R.id.firstAssignment,
R.id.secondAssignment,
R.id.thirdAssignment,
R.id.fourthAssignment,
R.id.fifthAssignment,
R.id.sixthAssignment };
// String array holding data fields from NURSE_TABLE
String[] from_nurseTable = new String [] {
// fields from NURSE_TABLE
DbCommunicator.KEY_DUTY_STATUS,
DbCommunicator.KEY_LNAME,
DbCommunicator.KEY_FNAME,
DbCommunicator.KEY_MI,
DbCommunicator.KEY_NURSE_ROWID,
DbCommunicator.KEY_ROOM_NUMBER};
// instantiate instance of DbCommunicator object
rosterView = new DbCommunicator(this);
// open instance
rosterView.open();
// get & manage cursor for NURSE_TABLE data
Cursor nurseTableCursor = rosterView.getNurseRosterCursor(this);
startManagingCursor(nurseTableCursor);
// instantiate cursor adaptor
ListAdapter nurseTableAdapter = new SimpleCursorAdapter(this,
R.layout.nurse_list, nurseTableCursor, from_nurseTable, to_nurseTable);
nurseTableCursor.moveToNext();
// set adapter to listView
listView.setAdapter(nurseTableAdapter);
}// displayNurseRoster()
커서를 생성하는 코드는 다음과 같습니다 마지막으로 내 레이아웃은 다음과 같습니다.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#81BEF7"
android:orientation="vertical" >
<Button
android:id="@+id/btnAddNurseToRoster"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/add"
android:focusable="true"/>
<Button
android:id="@+id/btnRemoveNurseFromRoster"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/btnAddNurseToRoster"
android:layout_toRightOf="@+id/btnAddNurseToRoster"
android:text="@string/delete"
android:focusable="true"/>
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/btnAddNurseToRoster"
android:textColor="#FFFFFF"
android:textStyle="bold"/>
</RelativeLayout>
처음 시작했을 때, ListView에 Nurses Table의 데이터가 채워져 있었지만 두 테이블을 함께 사용하기 시작한 이래로 시간이 충분했습니다.
도움/지시 사항을 매우 높이 평가하겠습니다.
정확히 무엇이 문제입니까? –
레이아웃은 상단에 두 개의 버튼이 표시되지만 목록보기는 완전히 비어 있습니다. logcat에 아무런 오류가 보이지 않습니다. – deadEddie
이 정보를 질문에 넣으십시오. –