segunda-feira, agosto 29, 2011

Otimizando o processo de insert de muitos registros no Android

HI,

A rotina de importação que implementei usando o ContentValues... put... insert... ficou uma carroça puxada por lesmas. Vou ter que refazer tudo. Procurei por dicas no google e achei bons materiais. Ainda vou implementar.

Aconselho uma lida nesse testo

Database Speed Comparison
http://www.sqlite.org/speed.html

Achei dua maneiras, e as duas tem que ter controle de transação.

How to speed up multiple inserts in SQLite
http://www.tanguay.info/web2008/codeExample.php?id=728

Android: Using DatabaseUtils.InsertHelper for faster insertions into SQLite database
http://www.outofwhatbox.com/blog/2010/12/android-using-databaseutils-inserthelper-for-faster-insertions-into-sqlite-database/

Tem esse outro texto também sobre como otimizar

SQLite Optimization FAQ
http://web.utk.edu/~jplyon/sqlite/SQLite_optimization_FAQ.html


Acredito que eu passe a utilizar esse código


try {
    mDb.beginTransaction();
    for (Value value : values) {
        ih.prepareForInsert();
        ih.bind(colIdx, value.getSomeValue());
        // ...
        ih.execute();
    }
    mDb.setTransactionSuccessful();
} finally {
    mDb.endTransaction();
}

editando

Achei esse código e estou utilizando ele. Passou de uns 15 minutos para menos de 1, hehehe.

Notes on Android SQLite bulk insert
http://sagistech.blogspot.com/2010/07/notes-on-android-sqlite-bukl-insert.html


Fiquem na Paz!!!

domingo, agosto 28, 2011

Função Split no Delphi

HI,

Estou utilizando essa função numa rotina para importar um arquivo texto delimitado.

Splitting a string in a string list
http://www.delphi3000.com/articles/article_2618.asp?SK=


Fiquem na Paz!!!

quarta-feira, agosto 24, 2011

Controle de transação no SQLite

HI,

Precisei colocar um controle de transação em uma rotina do sistema para Android que estou desenvolvendo.


db.beginTransaction();
try {
db.execSQL(...);
db.execSQL(...);
db.setTransactionSuccessful();
} finally {

db.endTransaction();
}


achei aqui essa dica
http://groups.google.com/group/android-developers/browse_thread/thread/ebe11a0fada35754

outro exemplo
http://www.helloandroid.com/tutorials/database-transactions

Fiquem na Paz!!!

Utilizando um dialogo de confirmação no Android

HI,

Aprendi uma maneira simples de criar um dialogo para solicitar a confirmação do usuário sobre alguma ação que será executada ou não no sistema. Um dialogo com as opções de SIM e NÃO por exemplo.

Achei a dica aqui

How to display a Yes/No dialog box in Android?
http://stackoverflow.com/questions/2478517/how-to-display-a-yes-no-dialog-box-in-android/2478662#2478662



DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        switch (which){
        case DialogInterface.BUTTON_POSITIVE:
            //botão SIM clicado
            break;
        case DialogInterface.BUTTON_NEGATIVE:
            //botão NÃO clicado
            break;
        }
    }
};

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Deseja excluir o registro?").setPositiveButton("SIM", dialogClickListener)
    .setNegativeButton("NÃO", dialogClickListener).show();




Fiquem na Paz!!!

Criando um dialogo personalizado no Android

HI,

Estava usando um AlertDialog para o usuário manipular o registro de uma tabela. O problema começou quando fui colocar um teste para saber se o usuário informou um campo obrigatório. Com o AlertDialog não consegui impedir que a tela se fechasse ao clicar no botão confirmar.

A solução que encontrei foi usar um dialogo personalizado. Dessa maneira se estiver tudo ok, executo o comando de fechar o dialogo.

How to display a custom dialog in your Android application
http://www.helloandroid.com/tutorials/how-display-custom-dialog-your-android-application


Fiquem na Paz

domingo, agosto 21, 2011

Formatando casas decimais no android

HI,

Uma dica que usei para exibir um valor decimal formatado


import java.util.*;

DecimalFormat dec = new DecimalFormat("###.##");

System.out.println(dec.format(value));

peguei aqui
http://www.daniweb.com/software-development/java/threads/32513/161716#post161716

Fiquem na Paz!!!

sábado, agosto 20, 2011

Passagem de parâmetro por referência no Android

HI,

Precisei receber o valor de uma função através do parâmetro, já que estava usando a função para retorna um outro valor. No Delphi e C# é moleza. Para conseguir fazer no android, só com essa dica que achei.

Can I pass parameters by reference in Java?
http://stackoverflow.com/questions/1068760/can-i-pass-parameters-by-reference-in-java


AtomicReference ref = new AtomicReference("Hello"); mutate(ref); System.out.println(ref.get()); //Goodbye! private void mutate(AtomicReference ref) { ref.set("Goodbye"); } Espero que possa ser útil Fiquem na Paz!!!

terça-feira, agosto 16, 2011

Criando arquivo texto com quebra de linha ( arquivo CSV )

HI,

Vou ter que criar um arquivo txt  no sistema que estou desenvolvendo.

Criei o arquivo usando essa dica

How to export data to CSV file – Java
http://www.mkyong.com/java/how-to-export-data-to-csv-file-java/

A bronca que surgiu, foi que no notepad não mostrava cada registro em uma linha, só no wordpad.

Achei a solução aqui para resolver isso
http://stackoverflow.com/questions/4794428/android-java-newline-not-working

só usar: \r\n
no exemplo tem somento \n


Fiquem na Paz!!!!

quarta-feira, agosto 10, 2011

Exibir texto com quebra de linha no android

HI,

Pretendo montar uma mensagem com quebra de linha usando o AlertDialog. Procurei por um exemplo usando o \n e acabei achando um bem melhor.

Nesse exemplo usa-se a tag BR do html para criar o efeito de quebra de linha

articleTextView.setText(Html.fromHtml(textForTextView));


achei aqui
http://stackoverflow.com/questions/2840608/how-do-i-add-a-newline-to-a-textview-in-android


Fiquem na Paz!!!!

terça-feira, agosto 09, 2011

Android SQLite Database - Tutorial

HI,

Um exemplo para se trabalhar com banco de dados no android

Android SQLite Database - Tutorial
http://www.vogella.de/articles/AndroidSQLite/article.html


Fiquem na Paz!!!

Manipular evento do spinner ao mudar item

HI,

Essa dica é para executar algum código ao selecionar um item do spinner.

Nesse exemplo vi que tem um evento ao não escolher nada ou ao escolher o mesmo item, não sei ao certo. Na verdade estou enfrentando esse problema, ao clicar no item que já está selecionado.

Android Spinner: Get the selected item change event
http://stackoverflow.com/questions/1337424/android-spinner-get-the-selected-item-change-event


Fiquem na Paz!!!

quinta-feira, agosto 04, 2011

Erro ao usar Spinner e Cursor

HI,

Ontem me deparei com um erro ao entrar pela segunda vez numa tela que tem uns quatro spinners. No log dizia que a tabela já tava aberta, algo assim.

Os erros que peguei e procurei no google são esses

ERROR/Cursor(296): Finalizing a Cursor that has not been deactivated or closed. database = /data/data/, table = null, query = select _id, Codigo, Descricao from tabela


08-04 03:38:15.472: ERROR/Cursor(298): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here


O erro foi solucionado usando o comando: startManagingCursor(cursor);

Que achei aqui


Fiquem na Paz!!!!

quarta-feira, agosto 03, 2011

Obter o valor de um campo da tabela associada ao Spinner

HI,

Dessa vez precisei pegar o valor código da tabela associada ao Spinner, que não é o _id. O exemplo que achei permite pegar o valor de qualquer campo. Então dá para pegar o valor do campo descrição ou código.

Exemplo:

Tabela sexo com os seguintes campos: _id, codsexo e descsexo

codsexo seria F | M
e descsexo FEMININO | MASCULINO

Para pegar o _id é só usar esse esquema:
int cod_id = spinnersexoIndex.getSelectedItemPosition();


E para pegar o valor dos demais campos:


String spinnerString = null;
Cursor cc = (Cursor)(spinnersexoIndex.getSelectedItem());
if (cc != null) {
    spinnerString = cc.getString(
        cc.getColumnIndex("codsexo") );
}

peguei esse exemplo aqui
http://stackoverflow.com/questions/1776552/android-how-to-get-selected-item-from-data-driven-spinner


Fiquem na Paz!!!!

segunda-feira, agosto 01, 2011

Evitando que a tela do android desligue

HI,

Existe um processo executado no meu aplicativo que demora um certo tempo e tava querendo que a tela não desligasse, para não pará-lo.

Na dica que achei existem duas maneiras para se fazer isso. Uma é via código e outra é um parâmetro do layout.

Keep the screen on
http://www.androidsnippets.com/keep-the-screen-on

Na pesquisar eu achei esse código para executar algum código quando a tela é ligada ou desligada

Handling Screen OFF and Screen ON Intents
http://thinkandroid.wordpress.com/2010/01/24/handling-screen-off-and-screen-on-intents/