Bom, eu estou com um problema e não sei se este é exatamente o fórum certo, a moderação pode mudar.
Enfim, eu tenho um arquivo CSV de mais ou menos 7 mil linhas nesse formato:
12345;001;String_desse_tamanho_ou_mais;-12343.4;-1234.5;0
Eu criei uma classe “CSV” assim:
public abstract class CSV {
private float latitude;
private float longitude;
private float codigo;
public void setLat(String lat)
{
this.latitude = Float.parseFloat(lat.replaceAll(" ", ""));
}
public void setLong(String longi)
{
this.longitude = Float.parseFloat(longi.replaceAll(" ", ""));
}
public void setCodigo(String codigo)
{
this.codigo = Float.parseFloat(codigo);
}
public float getLat()
{
return this.latitude;
}
public float getLon()
{
return this.longitude;
}
public float getCodigo()
{
return this.codigo;
}
}
Outra chamada “Onibus”
[code]public class Onibus extends CSV {
private String nome;
private float rota;
private float numero;
public void setNum(String numero)
{
this.numero = Float.parseFloat(numero);
}
public float getNum()
{
return this.numero;
}
public void setRota(String rota)
{
this.rota = Float.parseFloat(rota);
}
public float getRota()
{
return this.rota;
}
public void setNome(String nome)
{
this.nome = nome;
}
public String getNome()
{
return this.nome;
}
}[/code]
E a parte do código que roda o leitor da CSV:
public void lerCSV() throws FileNotFoundException
{
//Carregar o CSV
InputStream file = getResources().openRawResource(R.raw.onibus);
BufferedReader reader = new BufferedReader(new InputStreamReader(file));
//Ler o CSV
ValueProcessorProvider provider = new ValueProcessorProvider();
CSVEntryParser<Onibus> entryParser = new AnnotationEntryParser<Onibus>(Onibus.class, provider);
CSVReader<Onibus> csvPersonReader = new CSVReaderBuilder<Onibus>(reader).entryParser(entryParser).build();
try {
Onibus = csvPersonReader.readAll();
} catch (IOException e) {
e.printStackTrace();
}
//Testando se funcionou
Log.d("lol", Onibus.get(302).getNome());
}
Entretanto, quando eu tento separar em uma nova String[] os nomes que são repetidos, simplesmente o App trava e fecha:
public String[] Nomes()
{
for(int i=1;i<Onibus.size()+1;i++)
{
if(Onibus.get(i).getNome().compareTo(Onibus.get(i-1).getNome()) > 0)
{
nome[i-1] = Onibus.get(i).getNome();
}
}
return nome;
}
Eu tento colocar essa array “nome” numa listView apenas para testar o código, entretanto, não funciona, já que trava ao tentar executar Nomes();
Alguém pode me ajudar ou demonstrar um outro caminho mais rápido ? Já que o CSV é muito grande, não é o único e demora muito para o App carregar.