从 dbHandler.java 文件中获取数据但无法在列表视图中显示?

fetch data from a dbHandler.java file but not able to show it in listview?

我对我的代码做了一些更改并且它运行了,但我没有得到适当的输出。我创建了一个方法。

public void fetchData() {
        dbHandler = new CourseDbHandler(this,null,null,1);
        List<CreateCourse> course_data = dbHandler.getdata();
        String[] data = new String[course_data.size()];
        int i=0;
        for(CreateCourse co : course_data)
        {
            data[i] = co.getCourseSelected();
            i++;
        }
        courseList = (ListView) findViewById(R.id.CourselistView);
        courseAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data);
        courseList.setAdapter(courseAdapter);
        courseAdapter.notifyDataSetChanged();
     }

在这个方法中我使用了dbHandler.getdata方法,如下

public List<CreateCourse> getdata() throws NullPointerException {
    String dbString = "";
    String course;
    String sec;

    List<CreateCourse> list = new ArrayList<>();

    SQLiteDatabase db = getWritableDatabase();
    String query = "SELECT * FROM " + TABLE_COURSE +";";
    Cursor c = db.rawQuery(query,null);
    c.moveToFirst();

    if(c.equals(null)){
        System.out.println("NO DATA");
        return null;
    }
    else {
        do {
            course = c.getString(1);
            sec = c.getString(2);
            dbString = course+" "+sec;
            CreateCourse co = new CreateCourse();
            co.setCourseSelected(dbString);
            list.add(new CreateCourse(c.getString(1), c.getString(2)));
        }while (c.moveToNext());
    }
    db.close();
    return list;
}

这些是getter和setter方法

public void setCourseSelected(String courSelected) {
        courseSelected = courSelected;
    }

    public String getCourseSelected() {
        System.out.println(courseSelected);
        return courseSelected;
    }

出现错误不幸的是应用已停止

使用您的数据创建 class:

public class Course {  
public String id;  
public String course;  
public String sec;  

public Course (String id, String course, String sec) {
this.id = id;
this.course = course;
this.sec = sec;
}

然后将您的方法修改为return您的数据列表:

public List<Course> getdata() throws NullPointerException {
        List<Course> list = new ArrayList<>();

        SQLiteDatabase db = getWritableDatabase();
        String query = "SELECT * FROM " + TABLE_COURSE +";";
        Cursor c = db.rawQuery(query,null);
        c.moveToFirst();

        if(c.equals(null)){
            System.out.println("NO DATA");
         return null;
        }
        else {
            do {
                list.add(new Course(c.getString(0), c.getString(1), c.getString(2)));
            }while (c.moveToNext());
        }
        db.close();
        return list;
    }

然后您可以使用此 List 和 ArrayAdapter 在 ListView 中显示您的数据。

我更改了所有代码并解决了上面代码中的问题。

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_create_course);
        dbHandler = new CourseDbHandler(this, null, null, 1);
        Cursor c = dbHandler.getData();
        c.moveToFirst();
        // System.out.println("Select");
        if(c.equals(null)){
            System.out.println("NO DATA");
            }
        else {
            if(c.moveToFirst()) {
                do {
                    dbString=null;
                    course = c.getString(1);
                    sec = c.getString(2);
                    dbString = course + " " + sec;
                    courseItem.add(dbString);
                } while (c.moveToNext());
            }
        }
        courseList = (ListView) findViewById(R.id.CourselistView);
        courseAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, courseItem);
        courseList.setAdapter(courseAdapter);
        courseAdapter.notifyDataSetChanged();
}

感谢您的帮助..