Jump to content
Lenon John

Como pegar os dados de um TXT e inserir no meu arrayList? OU Como usar um TXT como banco de dados para o meu arrayList?

Recommended Posts

Eu preciso inserir mais de 3000 itens no ArrayList, o que gera o erro: method code too large.
Acredito que usando um TXT como "BANCO DE DADOS" vai resolver o meu problema.

 

Atualmente eu faço assim:

-----------------------------------------------------

ArrayList lista = new ArrayList();

// inserindo os itens no ArrayList

lista.add(new produtoItem(R.drawable.imagem, "AA", "AA", "AA", "AA"));


adapter = new produtoAdapter(this, lista);

ListView listView = (ListView) findViewById(R.id.listView1);

listView.setAdapter(adapter);

-----------------------------------------------------

 

Como pegar os dados de um TXT e inserir no meu arrayList?

OBS: Esse APP precisa funcionar sem a necessidade de internet. Ou seja, não posso usar um banco dados externo.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Motta
      Google e Oracle decidem na Suprema Corte briga judicial sobre Android
    • By Israel Lira
      Por gentileza, preciso de ajuda! estou iniciando aqui na comunidade e recente no flutter. Tenho uma missão de utilizar o json e controller dos inputs. Preciso pelo botão (ADD) sair da Primeira tela redirecionar para a Segunda tela, salvar ao colocar os inputs e retornar para a primeira mostrando (nome e valor). O formulário da Segunda Tela terá campos: nome, telefone, data e valor. Quero manter a função dismissible para termos o efeito de arrastar o item da lista. Segue o que estou fazendo mais com erros.
       
      Não sei como proceder e apanhando a vários dias!
        
      import 'dart:async'; import 'dart:convert'; import 'dart:io'; import 'package:flutter/material.dart'; import 'package:path_provider/path_provider.dart'; void main(){ runApp(MaterialApp( home: Home(), )); } class Home extends StatefulWidget { @override _HomeState createState() => _HomeState(); } class _HomeState extends State<Home> { final _toDoController = TextEditingController(); List _toDoList = [SegundaRota]; Map<String, dynamic> _lastRemoved; int _lastRemovedPos; @override void initState() { super.initState(); _readData().then((data) { setState(() { _toDoList = json.decode(data); }); }); } void _addToDo() { setState(() { Map<String, dynamic> newToDo = Map(); newToDo["title"] = _toDoController.text; _toDoController.text = ""; newToDo["ok"] = false; _toDoList.add(newToDo); _saveData(); }); } Future<Null> _refresh() async{ await Future.delayed(Duration(seconds: 1)); setState(() { _toDoList.sort((a, b){ if(a["ok"] && !b["ok"]) return 1; else if(!a["ok"] && b["ok"]) return -1; else return 0; }); _saveData(); }); return null; } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("Lista de Tarefas"), backgroundColor: Colors.blueAccent, centerTitle: true, ), body: Column( children: <Widget>[ Container( padding: EdgeInsets.fromLTRB(17.0, 1.0, 7.0, 1.0), child: Row( children: <Widget>[ RaisedButton( color: Colors.blueAccent, child: Text("ADD"), textColor: Colors.white, onPressed: () { Navigator.push( context, MaterialPageRoute(builder: (context) => SegundaRota()), ); }, ) ], ), ), Expanded( child: RefreshIndicator(onRefresh: _refresh, child: ListView.builder( padding: EdgeInsets.only(top: 10.0), itemCount: _toDoList.length, itemBuilder: buildItem),), ) ], ), ); } Widget buildItem(BuildContext context, int index){ return Dismissible( key: Key(DateTime.now().millisecondsSinceEpoch.toString()), background: Container( color: Colors.red, child: Align( alignment: Alignment(-0.9, 0.0), child: Icon(Icons.delete, color: Colors.white,), ), ), direction: DismissDirection.startToEnd, child: CheckboxListTile( title: Text(_toDoList[index]["title"]), value: _toDoList[index]["ok"], secondary: CircleAvatar( child: Icon(_toDoList[index]["ok"] ? Icons.check : Icons.error),), onChanged: (c){ setState(() { _toDoList[index]["ok"] = c; _saveData(); }); }, ), onDismissed: (direction){ setState(() { _lastRemoved = Map.from(_toDoList[index]); _lastRemovedPos = index; _toDoList.removeAt(index); _saveData(); final snack = SnackBar( content: Text("Tarefa \"${_lastRemoved["title"]}\" removida!"), action: SnackBarAction(label: "Desfazer", onPressed: () { setState(() { _toDoList.insert(_lastRemovedPos, _lastRemoved); _saveData(); }); }), duration: Duration(seconds: 2), ); Scaffold.of(context).removeCurrentSnackBar(); Scaffold.of(context).showSnackBar(snack); }); }, ); } Future<File> _getFile() async { final directory = await getApplicationDocumentsDirectory(); return File("${directory.path}/data.json"); } Future<File> _saveData() async { String data = json.encode(_toDoList); final file = await _getFile(); return file.writeAsString(data); } Future<String> _readData() async { try { final file = await _getFile(); return file.readAsString(); } catch (e) { return null; } } } class SegundaRota extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("Segunda Rota (tela)"), ), body: Column( children: <Widget>[ Container( padding: EdgeInsets.fromLTRB(17.0, 1.0, 7.0, 1.0), child: Row( children: <Widget>[ Expanded( child: TextField( controller: _toDoController, decoration: InputDecoration( labelText: "Nova Tarefa", labelStyle: TextStyle(color: Colors.blueAccent) ), ) ), RaisedButton( color: Colors.blueAccent, child: Text("ADD"), textColor: Colors.white, onPressed: _addToDo, ) ], ), ), Expanded( child: RefreshIndicator(onRefresh: _refresh, child: ListView.builder( padding: EdgeInsets.only(top: 10.0), itemCount: _toDoList.length, itemBuilder: buildItem),), ) ], ), body: Center( child: RaisedButton( onPressed: () { Navigator.pop(context); }, child: Text('Retornar !'), ), ), ); } }  

    • By Gilberto Jr
      Olá, boa tarde.
      Tudo bem?
       
      Preciso de uma ajuda aqui.
       
      Seguinte, através desse código eu consigo ler as informações que esta dentro do arquivo txt.
      <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width" /> <title>FileAPI HTML5</title> <style type="text/css"> #filecontents { border: double; overflow-y: scroll; height: 400px; } </style> </head> <body> Por favor selecione arquivo que será lido:<br /> <input type="file" id="txtfiletoread" /><br /> <div>Conteúdo do arquivo:</div> <div id="filecontents"> </div> <script> window.onload = function () { //Check the support for the File API support if (window.File && window.FileReader && window.FileList && window.Blob) { var fileSelected = document.getElementById('txtfiletoread'); fileSelected.addEventListener('change', function (e) { //Set the extension for the file var fileExtension = /text.*/; //Get the file object var fileTobeRead = fileSelected.files[0]; //Check of the extension match if (fileTobeRead.type.match(fileExtension)) { //Initialize the FileReader object to read the 2file var fileReader = new FileReader(); fileReader.onload = function (e) { var pontovirgula = ";"; var virgula = ","; var fileContents = document.getElementById('filecontents'); fileContents.innerText = fileReader.result.replace(virgula, pontovirgula).replace(virgula, pontovirgula); } fileReader.readAsText(fileTobeRead); } else { alert("Por favor selecione arquivo texto"); } }, false); } else { alert("Arquivo(s) não suportado(s)"); } } </script> </body> </html> So que o arquivo vem separado por virgulas. Eu quero substituir todas as virgulas por ponto e virgula. Se eu usar dessa forma, ele altera a virgula para ponto e virgula da primeira linha.
      <script> window.onload = function () { //Check the support for the File API support if (window.File && window.FileReader && window.FileList && window.Blob) { var fileSelected = document.getElementById('txtfiletoread'); fileSelected.addEventListener('change', function (e) { //Set the extension for the file var fileExtension = /text.*/; //Get the file object var fileTobeRead = fileSelected.files[0]; //Check of the extension match if (fileTobeRead.type.match(fileExtension)) { //Initialize the FileReader object to read the 2file var fileReader = new FileReader(); fileReader.onload = function (e) { var pontovirgula = ";"; var virgula = ","; var fileContents = document.getElementById('filecontents'); fileContents.innerText = fileReader.result.replace(virgula, pontovirgula).replace(virgula, pontovirgula); } fileReader.readAsText(fileTobeRead); } else { alert("Por favor selecione arquivo texto"); } }, false); } else { alert("Arquivo(s) não suportado(s)"); } } </script> 7909377852089;1;8380 7909377852133,1,8380 7909377820729,2,8380 7909377820736,2,8380 7909377820743,2,8380 E também, o ultimo valor eu preciso separar os centavos por , virgula.
       
      Arquivo deve ficar dessa forma quando mostrado na pagina.
       
      7909377852089;1;83,80
      7909377852133;1;83,80
      7909377820729;2;83,80
      7909377820736;2;83,80
      7909377820743;2;83,80
       
      Ou seja, contando da direita para esquerda, as duas primeiras posições é o centavos.
       
      Se alguém puder me ajudar, ficarei muito grato.
       
      Att;
      Gilberto Jr
    • By johny.freitas
      Boa noite, atualmente criamos um app pela plataforma appsheet(no-code).
      porém estou querendo criar uma aplicação própria(junto a equipe, temos 4pessoas), e nao sei em qual linguagem criar.
      precisamos que funcione web(para o pessoal interno) e mobile(android) para os téc em campo.
      estava pesquisando e vi que pelo react native da pra fazer o web e mobile, nao sei se seria o melhor.
      estavamos fazendo pelo android studio, só que lembramos que vai precisar ser acessado pela web e dei uma pausa.
    • By mlbarcelos
      Procuro programador para desenvolver um Quiz Game para android, utilizando a linguagem Java e a biblioteca LibGdx.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.