Este equipo de redactores ha pasado mucho tiempo buscando para dar espuestas a tu búsqueda, te compartimos la respuestas por esto nuestro objetivo es serte de gran apoyo.
Solución:
Dónde poner el archivo CSV en Android
Cree una carpeta llamada “raw” dentro de la carpeta “res” y coloque el archivo CSV en ella.
Cómo leer un archivo CSV, Nada especial ya que es Android. Todos vamos a utilizar nuestro código estándar de Java. Es mejor usar nuestro propio código en lugar de ir a una API. La siguiente clase es una utilidad para leer archivos CSV y se puede usar desde la aplicación de Android.
En el cual array almacenaremos elementos del archivo csv
En este ejemplo, es scorelist arraylist.
public class CSVFile
InputStream inputStream;
public CSVFile(InputStream inputStream)
this.inputStream = inputStream;
public List read()
List resultList = new ArrayList();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
try
String csvLine;
while ((csvLine = reader.readLine()) != null)
String[] row = csvLine.split(",");
resultList.add(row);
catch (IOException ex)
throw new RuntimeException("Error in reading CSV file: "+ex);
finally
try
inputStream.close();
catch (IOException e)
throw new RuntimeException("Error while closing input stream: "+e);
return resultList;
Entonces, ¿cómo cargar el archivo CSV desde la carpeta “sin procesar” y usar la utilidad anterior para leerlo?
InputStream inputStream = getResources().openRawResource(R.raw.stats);
CSVFile csvFile = new CSVFile(inputStream);
List scoreList = csvFile.read();
MainActivity.java
public class MainActivity extends Activity
private ListView listView;
private ItemArrayAdapter itemArrayAdapter;
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.listView);
itemArrayAdapter = new ItemArrayAdapter(getApplicationContext(), R.layout.item_layout);
Parcelable state = listView.onSaveInstanceState();
listView.setAdapter(itemArrayAdapter);
listView.onRestoreInstanceState(state);
InputStream inputStream = getResources().openRawResource(R.raw.stats);
CSVFile csvFile = new CSVFile(inputStream);
List scoreList = csvFile.read();
for(String[] scoreData:scoreList )
itemArrayAdapter.add(scoreData);
ItemArrayAdapter.java
public class ItemArrayAdapter extends ArrayAdapter
private List scoreList = new ArrayList();
static class ItemViewHolder
TextView name;
TextView score;
public ItemArrayAdapter(Context context, int textViewResourceId)
super(context, textViewResourceId);
@Override
public void add(String[] object)
scoreList.add(object);
super.add(object);
@Override
public int getCount()
return this.scoreList.size();
@Override
public String[] getItem(int index)
return this.scoreList.get(index);
@Override
public View getView(int position, View convertView, ViewGroup parent)
View row = convertView;
ItemViewHolder viewHolder;
if (row == null)
LayoutInflater inflater = (LayoutInflater) this.getContext().
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.item_layout, parent, false);
viewHolder = new ItemViewHolder();
viewHolder.name = (TextView) row.findViewById(R.id.name);
viewHolder.score = (TextView) row.findViewById(R.id.score);
row.setTag(viewHolder);
else
viewHolder = (ItemViewHolder)row.getTag();
String[] stat = getItem(position);
viewHolder.name.setText(stat[0]);
viewHolder.score.setText(stat[1]);
return row;
activity_mail.xml
item_layout.xml
Para ver el código fuente completo, puede consultar estos enlaces javapapers.com/wp-content/uploads/2014/07/CSVFileRead.zip
Creo que eso ayudará
Un mejor analizador de CSV maneja los campos entre comillas
import android.content.Context;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class CSVReader
private class StringDArray
private String[] data=new String[0];
private int used=0;
public void add(String str)
if (used >= data.length)
int new_size= used+1;
String[] new_data=new String[new_size];
java.lang.System.arraycopy( data,0,new_data,0,used);
data=new_data;
data[used++] = str;
public int length()
return used;
public String[] get_araay()
return data;
private Context context;
public CSVReader(Context context)
this.context=context;
public List read(File file)
List resultList = new ArrayList();
try
InputStream inputStream= new FileInputStream(file);
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String csvLine;
final char Separator = ',';
final char Delimiter = '"';
final char LF = 'n';
final char CR = 'r';
boolean quote_open = false;
while ((csvLine = reader.readLine()) != null)
//String[] row = csvLine.split(",");// simple way
StringDArray a=new StringDArray();
String token="";
csvLine+=Separator;
for(char c:csvLine.toCharArray())
switch (c)
case LF: case CR:// not required as we are already read line
quote_open=false;
a.add(token);
token="";
break;
case Delimiter:
quote_open=!quote_open;
break;
case Separator:
if(quote_open==false)
a.add(token);
token="";
else
token+=c;
break;
default:
token+=c;
break;
if(a.length()>0 )
if(resultList.size()>0)
String[] header_row =(String[]) resultList.get(0);
if(a.length()>=header_row.length)
String[] row = a.get_araay();
resultList.add(row);
else
String[] row = a.get_araay();
resultList.add(row);//header row
inputStream.close();
catch (Exception e)
Toast.makeText(context,"Error : " + e.getMessage(), Toast.LENGTH_LONG).show();
return resultList;
Uso
File file=new File(path);
CSVReader csvReader=new CSVReader(activity.this);
List csv=csvReader.read(file);
if(csv.size()>0)
String[] header_row =(String[]) csv.get(0);
if(header_row.length>1)
String col1=header_row[0];
String col2=header_row[1];
Toast.makeText(activity.this,csv.size() + " rows", Toast.LENGTH_LONG).show();
Datos de muestra utilizados
ID, nombre
1, elemento de prueba 1
“2”, “Elemento de prueba 2”
“3”, “Prueba, elemento 3”
4, elemento de prueba 4
Descargo de responsabilidad: Nunca he trabajado con Android, pero conozco Java, así que espero que sea lo mismo.
Dicho esto, puedes probar algo como esto.
Scanner scanner = new Scanner(new File("file.csv"));
ArrayList pokemon = new ArrayList<>();
while(scanner.hasNextLine())
pokemon.add(scanner.nextLine().split(",")[1]);
scanner.close();
Si te sientes suscitado, eres capaz de dejar un enunciado acerca de qué le añadirías a este enunciado.