Vou fazer dois reparos e dar duas dicas.
a) Tente não usar o método "add" com índice, porque vai dar confusão na certa. Você já fez uma; para evitar problemas, é melhor nunca usar o índice.
b) Use as declarações com "< " e ">", mais conhecidas como "Generics".
Podem ser mais chatas na hora de declarar variáveis e parâmetros, mas tornam mais simples o uso dessas variáveis e parâmetros.
c) Não fique misturando maiúsculas e minúsculas. Nomes de métodos e variáveis devem começar por minúsculas e nomes de classes devem começar por maiúsculas. Assim, só de olhar o programa, você sabe se algo é o nome de uma classe ou então é de um método ou variável.
Por exemplo, "carregaLista" é um método, e "Conexao" uma classe. Isso ajuda a evitar bagunça.
d) Coisas que contém vários objetos (como arrays e listas) devem ficar com seu nome no plural. Isso também ajuda a evitar bagunça. Por exemplo, uma lista de campos pode se chamar "listaCampos" ou então "campos".
// Original
public void carregaLista(){
List listaCampo = new ArrayList();
listaCampo.add(0, tfNomeAluno);
listaCampo.add(1,tfRaAluno);
List listaString = new ArrayList();
listaString.add(0, "String1");
listaString.add(0, "String2"); //<- se olhar direitinho, a string 2 ficou "antes" da string 1. Leia a documentação.
}
Acho que deveria ser assim:
public void CarregaLista(){
List<JTextField> listaCampos = new ArrayList<JTextField>();
listaCampos.add(tfNomeAluno);
listaCampos.add(tfRaAluno);
List<String> listaNomesCampos = new ArrayList<String>();
listaNomesCampos.add("nome");
listaNomesCampos.add("ra");
}
public void last(List<JTextField> campos, List<String> nomesCampos) throws SQLException{
int i=0;
conecta = new Conexao();
conecta.conecta();
conecta.executeSQL("select * from aluno");
conecta.resultset.last();
for (int i = 0; i < campos.size(); ++i) {
JTextField campo = campos.get(i);
String valor = conecta.resultset.getString (nomesCampos.get(i));
campo.setText (valor);
}
}