2013-03-25 51 views
0

我不熟悉這種類型的編程。我認爲它是我錯過了一些東西,但我不知道我錯過了什麼。我在運行模擬器時沒有遇到任何錯誤,並且我能夠驗證數據是否正在進入數據庫。我只是不能讓它顯示在列表中。該列表顯示但沒有數據。請幫助!來自數據庫的數據不會在文本視圖中打印

displayCourse.java

package com.greygoosefarmpa.fencecoursebuilder; 
import java.util.ArrayList; 
import java.util.List; 

import com.google.android.maps.MapActivity; 
import com.greygoosefarmpa.db.courseDBOpenHelper; 
import com.greygoosefarmpa.db.courseDataSource; 
import com.greygoosefarmpa.model.Course; 

import android.app.Activity; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.ArrayAdapter; 
import android.widget.TextView; 


public class displayCourse extends MapActivity { 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.displaycourse); 


TextView dc = (TextView) findViewById(R.id.displayCourses); 

courseDataSource datasource = new courseDataSource(this); 
datasource.open(); 




List<Course> course = datasource.findAll(); 

ArrayAdapter<Course> adapter = new ArrayAdapter<Course>(this, android.R.layout.simple_list_item_1, course); 
setListAdapter(adapter); 
//datasource.close(); 

} 



private void setListAdapter(ArrayAdapter<Course> adapter) { 
    // TODO Auto-generated method stub 

} 



@Override 
protected boolean isRouteDisplayed() { 
    // TODO Auto-generated method stub 
    return false; 
}} 

courseDataSource.java

package com.greygoosefarmpa.db; 

import java.util.ArrayList; 
import java.util.List; 

import com.greygoosefarmpa.model.Course; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.*; 
import android.util.Log; 

public class courseDataSource { 

public static final String LOGTAG = "courseDatabase"; 

SQLiteOpenHelper dbhelper; 
SQLiteDatabase database; 

private static final String[] allColumns = { 
     courseDBOpenHelper.COLUMN_ALOCATION, 
     courseDBOpenHelper.COLUMN_BLOCATION, 
     courseDBOpenHelper.COLUMN_COURSENAME, 
     courseDBOpenHelper.COLUMN_FENCENAME, 
     courseDBOpenHelper.COLUMN_ID }; 


public courseDataSource(Context context) { 
    dbhelper = new courseDBOpenHelper(context); 
    database = dbhelper.getWritableDatabase(); 
} 

public void open(){ 
    Log.i(LOGTAG, "database open"); 
    database = dbhelper.getWritableDatabase(); 
} 

public void close(){ 
    Log.i(LOGTAG, "database closed"); 
    dbhelper.close(); 
} 

public Course create(Course course) { 
    ContentValues values = new ContentValues(); 
    values.put(courseDBOpenHelper.COLUMN_COURSENAME, course.getcourseid()); 
    values.put(courseDBOpenHelper.COLUMN_FENCENAME, course.getcoursename()); 
    values.put(courseDBOpenHelper.COLUMN_ALOCATION, course.getAlocation()); 
    values.put(courseDBOpenHelper.COLUMN_BLOCATION, course.getBlocation()); 
    long insertid = database.insert(courseDBOpenHelper.TABLE_COURSES, null, values); 
    course.setcourseid(insertid); 
    return course; 
} 

public List<Course> findAll() { 
    List<Course> courses = new ArrayList<Course>(); 

    Cursor cursor = database.query(courseDBOpenHelper.TABLE_COURSES, allColumns, null, null, null, null, null); 
      Log.i(LOGTAG, "returned " + cursor.getCount() + " rows"); 
      cursor.moveToFirst(); 
      while(!cursor.isAfterLast()) { 
      cursorToCourse(cursor); 
      cursor.moveToNext(); 
      } 
      cursor.close(); 
      return courses; 
     } 




private Course cursorToCourse(Cursor cursor) { 
    Course course = new Course(); 
    course.setcourseid(cursor.getLong(cursor.getColumnIndex(courseDBOpenHelper.COLUMN_ID))); 
    course.setAlocation(cursor.getString(cursor.getColumnIndex(courseDBOpenHelper.COLUMN_ALOCATION))); 
    course.setBlocation(cursor.getString(cursor.getColumnIndex(courseDBOpenHelper.COLUMN_BLOCATION))); 
    course.setcoursename(cursor.getString(cursor.getColumnIndex(courseDBOpenHelper.COLUMN_COURSENAME))); 
    course.setfencename(cursor.getString(cursor.getColumnIndex(courseDBOpenHelper.COLUMN_FENCENAME))); 
    return course; 
} 
} 

Course.java

package com.greygoosefarmpa.model; 

import java.text.NumberFormat; 

import android.R.string; 
import android.view.View; 

public class Course { 
private long courseid; 
private String coursename; 
private String fencename; 
private String Alocation; 
private String Blocation; 


public long getcourseid(){ 
    return courseid; 
} 

public void setcourseid(long courseid) { 
    this.courseid = courseid; 
} 

public String getcoursename(){ 
    return coursename; 
} 

public void setcoursename(String string){ 
    this.coursename = string; 
} 

public String getfencename(){ 
    return fencename; 
} 

public void setfencename(String fencename){ 
    this.fencename = fencename; 
} 

public String getAlocation(){ 
    return Alocation; 
} 

public void setAlocation(String string){ 
    this.Alocation = string; 
} 

public String getBlocation(){ 
    return Blocation; 
} 

public void setBlocation(String string){ 
    this.Blocation = string; 
} 


} 

courseDBOpenHelper.java

package com.greygoosefarmpa.db; 

import android.content.Context; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.util.Log; 

public class courseDBOpenHelper extends SQLiteOpenHelper { 

private static final String LOGTAG = "courseDatabase"; 

private static final String DATABASE_NAME = "courses.db"; 
private static final int DATABASE_VERSION = 1; 

public static final String TABLE_COURSES = "courses"; 
public static final String COLUMN_ID = "coursesID"; 
public static final String COLUMN_COURSENAME = "coursename"; 
public static final String COLUMN_FENCENAME = "fencename"; 
public static final String COLUMN_ALOCATION = "alocation"; 
public static final String COLUMN_BLOCATION = "blocation"; 

private static final String TABLE_CREATE = 
     "CREATE TABLE " + TABLE_COURSES + " (" + 
     COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
     COLUMN_COURSENAME + " TEXT, " + 
     COLUMN_FENCENAME + " TEXT, " + 
     COLUMN_ALOCATION + " NUMERIC, " + 
     COLUMN_BLOCATION + " NUMBERIC " + 
     ")"; 

public courseDBOpenHelper(Context context) { 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    db.execSQL(TABLE_CREATE); 
    Log.i(LOGTAG, "table created"); 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    db.execSQL("DROP TABLE IF EXISTS" + TABLE_COURSES); 
    onCreate(db); 

} 

} 

回答

1

試着改變你的while語句:

cursor.moveToFirst(); 
while(!cursor.isAfterLast()) { 
    ...operations... 
    cursor.moveToNext(); 
} 

這是我怎麼一直在做光標迭代。您可能想要考慮創建另一個函數來創建給定遊標的課程,就像這樣。

private Course cursorToCourse(Cursor cursor) { 
    Course course = new Course(); 
    course.setcourseid(cursor.getLong(cursor.getColumnIndex(courseDBOpenHelper.COLUMN_ID))); 
    course.setAlocation(cursor.getString(cursor.getColumnIndex(courseDBOpenHelper.COLUMN_ALOCATION))); 
    course.setBlocation(cursor.getString(cursor.getColumnIndex(courseDBOpenHelper.COLUMN_BLOCATION))); 
    course.setcoursename(cursor.getString(cursor.getColumnIndex(courseDBOpenHelper.COLUMN_COURSENAME))); 
    course.setfencename(cursor.getString(cursor.getColumnIndex(courseDBOpenHelper.COLUMN_FENCENAME))); 
    return course; 
} 

只是爲了清理一些東西,再加上你可以輕鬆地重新使用它。

哦,快點!在返回之前,不要忘記在findAll()的末尾關閉光標。

cursor.close(); 
+0

我做了這些改變,仍然沒有填充我的名單:( – user2032899 2013-03-26 13:07:51

相關問題