Inserindo dados no banco SQLite

Tenho um webservice que me retorna os seguintes dados

CodigoDisciplina, Disciplina, CodigoTurma.

Partindo de um principio que o professor pode ter mais de uma disciplina, por exemplo,

CodigoDisciplina: 22, Disciplina: Portugues, **CodigoTurma:**40
CodigoDisciplina: 23, Disciplina: Matematica, **CodigoTurma:**40

Tenho uma tabela no SQLite os mesmos atributos acima, preciso receber esses dados e inserir no banco de dados. Abaixo segue o código que implementei, porem o problema é que está inserindo somente o ultimo registro, no caso por exmplo:

CodigoDisciplina: 23, Disciplina: Matematica, **CodigoTurma:**40


Classe do WebService

public class WsDisciplinas {
    private static String SOAP_ACTION ="http://feol/DisciplinasProfessor";
    private static String NAMESPACE = "http://feol/";
    private static String METHOD_NAME= "DisciplinasProfessor";
    private static String URL = "http://192.168.43.175/ServiceFeol.asmx?WSDL";

    ArrayList<Disciplinas> listDisciplinas = new ArrayList<>();
    Disciplinas disciplinas = new Disciplinas();

    public ArrayList<Disciplinas> disciplinas(String codProfessor){

        try {
            SoapObject resposta = new SoapObject(NAMESPACE, METHOD_NAME);

                resposta.addProperty("CodigoPro", codProfessor);

            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            envelope.dotNet = true;
            envelope.setOutputSoapObject(resposta);

            HttpTransportSE http = new HttpTransportSE(URL);
            http.call(SOAP_ACTION, envelope);

            String resultado = envelope.getResponse().toString();

            JSONArray jsonArray = new JSONArray(resultado);

            for(int i=0;i<jsonArray.length();i++ ) {

                JSONObject jsonObject =jsonArray.getJSONObject(i);

                disciplinas.setCodDisciplina(jsonObject.getString("CodMat"));
                disciplinas.setDisciplina(jsonObject.getString("Materia"));
                disciplinas.setCodTurma(jsonObject.getString("CodTur"));


                listDisciplinas.add(i,disciplinas);
            }
        }  catch (HttpResponseException e) {
            e.printStackTrace();
        } catch (SoapFault soapFault) {
            soapFault.printStackTrace();
        } catch (XmlPullParserException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        }


        return listDisciplinas;
    }
}

Classe DAO persiste os dados

public class DaoDisciplinas {

    private SQLiteDatabase dataBase;
    private BancoDados bancoDados;

    public DaoDisciplinas(Context context) {bancoDados = new BancoDados(context);}
    public String insereDisciplinas(ArrayList<Disciplinas> disciplinasList) {

        ContentValues valores;
        long resultado = 1;

        for (int i =0; i<disciplinasList.size();i++){
            dataBase = bancoDados.getWritableDatabase();
            valores = new ContentValues();

            valores.put("CODDISCIPLINA", disciplinasList.get(i).getCodTurma());
            valores.put("DISCIPLINA", disciplinasList.get(i).getDisciplina());
            valores.put("CODTURMA", disciplinasList.get(i).getCodTurma());


            resultado = dataBase.insertOrThrow("DISCIPLINA", null, valores);
            dataBase.close();

            valores.put("CODDISCIPLINA", disciplinasList.get(i).getCodTurma());
            valores.put("DISCIPLINA", disciplinasList.get(i).getDisciplina());
            valores.put("CODTURMA", disciplinasList.get(i).getCodTurma());

            dataBase.close();

        }
        if (resultado == -1)
            return "Erro de registro";
        else
            return "Registro Inserido com sucesso";

    }
}

Classe da activity que executa a ação de baixar do webservice e chamar a classe dao passando o ArrayList retornado pelo webService.

public class DisciplinaActivity extends Activity {


    DaoDisciplinas daoDisciplinas = new DaoDisciplinas(this);
    WsDisciplinas wsDisciplinas = new WsDisciplinas();
    private Button btSincronizar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_disciplina);

   btSincronizar = (Button) findViewById(R.id.btSincronizar);
        btSincronizar.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                btSincronizarOnClick();

            }

        });


    }

    private void btSincronizarOnClick() {


        String msg = getString(R.string.dlg_msg);
        String titulo = getString(R.string.dlg_titulo);

        final ProgressDialog dialog = ProgressDialog.show(this, titulo, msg);

        new Thread(new Runnable() {
            @Override
            public void run() {
                try {

                    ArrayList<Disciplinas> disciplinasList = wsDisciplinas.disciplinas("101");
                    daoDisciplinas.insereDisciplinas(disciplinasList);

                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {

                                Toast t = Toast.makeText(getBaseContext(), "Inserido com sucesso", Toast.LENGTH_SHORT);
                                t.show(); ///gravar na tabela
                        }
                    });
                } catch (Exception e) {
                } finally {
                    dialog.dismiss();
                }
            }
        }).start();


    }




}