Dados não são inseridos no sqlite

Galera estou iniciando agora no Android, fui fazer um teste de inserção de dados no banco porém os dados não são inseridos, posso tá comendo mosca em algum momento, segue abaixo o código.

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

classe responsável por apresentar os alunos na list

    AlunoDAO dao = new AlunoDAO(this);
    List<Aluno> alunos =  dao.buscaAlunos();
    dao.close();

    ListView listaAlunos = ( ListView) findViewById(R.id.lista_alunos);


    ArrayAdapter<Aluno> adapter = new ArrayAdapter<Aluno>(this,android.R.layout.simple_list_item_1,alunos);
    listaAlunos.setAdapter(adapter);

    Button novoAluno = (Button) findViewById(R.id.novo_aluno);

Classe responsável por inserir e buscar os alunos no banco

  public AlunoDAO(Context context) {
    super(context, "Agenda",null, 1);
}

@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
    String sql = "CREATE TABLE Alunos (_id INTEGER PRIMARY KEY, nome TEXT NOT NULL, endereco TEXT, site TEXT, nota REAL);";

    sqLiteDatabase.execSQL(sql);
}

@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) {
    String sql = "DROP TABLE IF EXISTS Alunos";
    sqLiteDatabase.execSQL(sql);
    onCreate(sqLiteDatabase);
}

public void insere(Aluno aluno) {
    SQLiteDatabase db = getWritableDatabase();
    ContentValues dados = new ContentValues();
    dados.put("nome",aluno.getNome());
    dados.put("endereco",aluno.getEndereco());
    dados.put("telefone",aluno.getTelefone());
    dados.put("site",aluno.getSite());
    dados.put("nota",aluno.getNota());

    db.insert("Alunos",null,dados);
}

public List<Aluno> buscaAlunos() {
    String sql = "SELECT * FROM Alunos;";
    SQLiteDatabase db = getReadableDatabase();//getReadableDatabase
    Cursor c = db.rawQuery(sql,null);

    List<Aluno> alunos = new ArrayList<Aluno>();
    while(c.moveToNext()){
        Aluno a = new Aluno();
        a.setId(c.getLong(c.getColumnIndex("id")));
        a.setNome(c.getString(c.getColumnIndex("nome")));
        a.setEndereco(c.getString(c.getColumnIndex("endereco")));
        a.setTelefone(c.getString(c.getColumnIndex("telefone")));
        a.setSite(c.getString(c.getColumnIndex("site")));
        a.setNota(c.getDouble(c.getColumnIndex("nota")));
        alunos.add(a);
    }
    c.close();
    return alunos;
}

Nenhum erro é apontado, utilizando o debug sempre visualizo que o array list retornado pela busca alunos está vazia, o
db.insert("Alunos", null, dados); vejo pelo debug que chega os dados preenchidos.

Gostaria que me desse uma luz para este problema.
Desde já agradeço a colaboração de todos.

Vc chegou a conclusão de que não está inserindo porque quando vc executa o

public List<Aluno> buscaAlunos()

nao retorna nada ?

Uma dica use esse método

       try {
            id = db.insertOrThrow(TABLE_NAME, null, contentValues);
        } catch (SQLException sqlex) {
            String eMessage = String.format("%s\n%s", sqlex.getMessage(), sqlex.getLocalizedMessage());
            Log.e("INSERT_MATERIAL_EXCP", eMessage);
        }

Se der ruin vai lancar uma exception e se id for um valor menor que 1 é pq não inseriu. o metodo insert tbm retorna um long que é o id que foi gerado quando vc executou o INSERT.

Sobre o seu método, buscarAlunos. fal uma coisa no seu loop, posicionar o cursor na primeira linha da tabela que foi formada pela execução da query. Vc precisa executar o métod

cursos.moveToFirst()

Esse método retorna TRUE se sua query tiver 1 lihha ou mais, dai vc faz o moveToNext()

Eu geralmente faço assim

        if(cursor != null && cursor.moveToFirst()) {
        do {
            int idxDescription      = cursor.getColumnIndex(FIELDS[1]);
            int idxMaterialCode     = cursor.getColumnIndex(FIELDS[2]);
            String description      = cursor.getString(idxDescription);
            String code             = cursor.getString(idxMaterialCode);
             Z z= new z();
             z.s(description);
             z.t(code);
             z.uy(quantity);
            list.add(z);
        } while (cursor.moveToNext());
    }

Acho que isso pode te ajudar. \o

Olha acho melhor você criar uma classe criando o banco como nesse exemplo. Você tem que estender a SQLiteOpenHelper. Depois é só chamar a classe: ClasseCriarBanco banco = new ClasseCriarBanco(this, “banc.db”, null, 1);

public class ClasseCriarBanco extends SQLiteOpenHelper {

public static final String ID = "_id";
public static final String TABELA = "tabela";
public static final String TLOJAS = "tabela_lojas";
public static final String ESTADO = "estado";
public static final String CIDADE = "cidade";
public static final String BAIRRO = "bairro";
public static final String LOJAS = "lojas";


public ClasseCriarBanco(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
    super(context, name, factory, version);

}



@Override
public void onCreate(SQLiteDatabase db) {
    String sql = "CREATE TABLE " + TABELA +"("+ ID + " integer primary key autoincrement,"+ ESTADO + " text,"+ CIDADE + " text,"+ BAIRRO + " text"+")";
    db.execSQL(sql);

    String sql2 = "CREATE TABLE " + TLOJAS +"("+ ID + " integer primary key autoincrement,"+ LOJAS + " text"+")";
    db.execSQL(sql2);

}

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


}

}