游标无法按预期工作

时间:2017-11-05 16:57:35

标签: android sqlite

我正在尝试将对象从SQLite数据库传递到片段,但它们在整个过程中的某个地方已经被置为无效。

DatabaseHelper中的Log.i行按预期输出,但CollectionsFragment中的Log.i行没有 - 它返回正确的值数,但所有值都为空。

我觉得在DatabaseHelper中记录collectionsList会很有用,但我不确定如何使用ArrayList。

DatabaseHelper的片段:

public List<Book> getAllCollections(int authorID) {

        List<Book> collectionsList = new ArrayList<>();

        // Select all query
        String selectQuery = "SELECT DISTINCT collection FROM " + BOOKS + " WHERE author_id =  '" + authorID + "'";

        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);

        // looping through all rows and adding to list

        if (cursor.moveToFirst()) {
            do {
                Book book = new Book();
                book.setCollection(cursor.getString(0));
                Log.i("stories", cursor.getString(0)); // returns with correct values
                collectionsList.add(book);
            } while (cursor.moveToNext());
        }

        return collectionsList;
        // not sure how to log collectionsList here
    }
来自CollectionsFragment的

Snippet:

// link ListView object with XML ListView
        collectionsListView = (ListView) view.findViewById(R.id.collections_list_view);

        // create new instance of DatabaseHelper
        DatabaseHelper db = new DatabaseHelper(getActivity());

        // return view;

        // create list of collections through getAllCollections method
        List<Book> collectionsList = db.getAllCollections(authorID);
        Log.i("testing", collectionsList.toString()); // returns [null, null]

        // create new ArrayAdapter
        ArrayAdapter<Book> arrayAdapter =
                new ArrayAdapter<Book>(getActivity(), android.R.layout.simple_list_item_1, collectionsList);

        // link ListView and ArrayAdapter
        collectionsListView.setAdapter(arrayAdapter);

书籍课程:

public class Book {

    int id;
    String title;
    int author_id;
    String collection;
    String body;

    @Override
    public String toString() {
        return title;
    }

    public Book() {

    }

    public Book(int id, String title, int author_id, String collection, String body) {
        this.id = id;
        this.title = title;
        this.author_id = author_id;
        this.collection = collection;
        this.body = body;
    }

    // getters

    public int getStoryID() {
        return this.id;
    }

    public String getTitle() {
        return this.title;
    }

    public int getAuthorID() {
        return this.author_id;
    }

    public String getCollection() {
        return this.collection;
    }

    public String getBody() {
        return this.body;
    }

    // setters

    public void setStoryID(int id) {
        this.id = id;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public void setAuthorID(int author_id) {
        this.author_id = author_id;
    }

    public void setCollection(String collection) {
        this.collection = collection;
    }

    public void setBody(String body) {
        this.body = body;
    }

}

0 个答案:

没有答案