SQLite devolve lista nula!

to fazendo um codigo de um app, e estou tendo problemas com o SQLite, geralmente tenho problemas com ele, todas as vezes na verdade, sempre aparece algo novo… enfim, o codigo a seguir basicamente cadastra o uma materia e tal no banco, mais quando vou recuperar elas ele devolve uma lista nula, sendo que um codigo exatamente igual funciona em outro app, oque me faz pensar que e problema no save…

Este primeiro trexo e oque seta o adapter… tudo certo com ele eu acho.

 @Override
    public void onResume() {
        super.onResume();
        UserDAO dao = new UserDAO(getActivity());
        List<CourseEntitie> lista = dao.getList();
        ListAdapter adapter = new listAdapter(lista, getActivity());

        this.listView.setAdapter(adapter);
    }

Este agora e o do SQLite

package com.foraway.calendarschool.SQLite;

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

import com.foraway.calendarschool.entities.CourseEntitie;

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

/**
 * Created by mac on 19/02/16.
 */
public class UserDAO extends SQLiteOpenHelper {

    //constantes
    public static final String TAG_BD_ALL = "sql";
    public static final String NOME_BD = "USER";
    private static final int VERSION_BD = 1;
    private static final String TABLE = "curso";

    //constructor
    public UserDAO(Context context) {
        super(context, NOME_BD, null, VERSION_BD);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql = "create table "+ TABLE +"(id integer primary key autoincrement, fundation text, curso text, materia1 text, materia2 text, materia3 text, materia4 text, materia5 text, materia6 text, materia7 text, materia8 text, materia9 text, materia10 text, materia11 text, materia12 text, materia13 text, materia14 text, materia15 text, materia16 text, materia17 text, materia18 text, materia19 text, materia20 text);";
        db.execSQL(sql);
        Log.e(TAG_BD_ALL, "tabela de usuario criado com sucesso");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        //atualiza o banco.
    }

    public void save(CourseEntitie c, int total) {
        SQLiteDatabase db = getReadableDatabase();
        try {
            ContentValues v = new ContentValues();
            v.put("fundation", c.getFundacao());
            v.put("curso", c.getCurso());
            for (int i = 1; i <= total; i++){
                String materia = "materia" + i;
                v.put(materia, c.getHours().getMaterias().get(i-1));
            }
            db.update(TABLE, v, null, null);
            Log.e("SQL", "salvou com sucesso");

        }finally {
            db.close();
        }
    }

    public List<CourseEntitie> getList() {
        SQLiteDatabase db = getReadableDatabase();

        try{
            Cursor c = db.query(TABLE, null, null, null, null, null, null, null);

            return toList(c);
        }finally {
            db.close();
        }
    }

    private List<CourseEntitie> toList(Cursor c) {
        List<CourseEntitie> list = new ArrayList<>(3);

        if(c.moveToFirst()){
            do {
                CourseEntitie cur = new CourseEntitie();

                cur.setId(c.getLong(c.getColumnIndex("id")));
                cur.setCurso(c.getString(c.getColumnIndex("curso")));
                cur.setFundacao(c.getString(c.getColumnIndex("fundation")));
            }while (c.moveToNext());
        }

        return list;
    }
}

o codigo esta porqueira, mais estou fazendo apenas para mim, vai me ajudar a organizar os horarios escolares entre tecnico e ensino medio.
obrigado pela atencao, espero as respostar.

Oi tudo bem ?

Tenta usar o método rawQuery, para fazer a busca no banco.

Só precisamos passar para ele o comando SQL e um array de string que serve para passar os paramêtros de busca, como você quer todas as linhas pode passar null, já que não haverá parametros no comando sql.

String sql = "select * from " + table; Cursor cursor = getReadableDatabase().rawQuery(sql, null);

E você precisa iterar e adicionar cada item na sua listagem :

List lista = new ArrayList<>();
while(cursor.moveToNext()){
SeuObjeto seuObjeto = new SeuObjeto();

//setters em seuObjeto

//add na lista cada objeto buscado no banco
lista.add(seuObjeto);
}

return lista;

Testa ai, vê se resolve !

Abraço

mais uma coisa, antes de vc começar a correr o cursor eu já li que é sempre aconselhável vc mover o cursor para a primeira posição

cursor.moveToFirst();

não sei se é realmente necessário mas sempre faço isso.