Android Open Source - Android-ListView-ContentProvider Nota Activity






From Project

Back to project page Android-ListView-ContentProvider.

License

The source code is released under:

MIT License

If you think the Android project Android-ListView-ContentProvider listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.iop.listprovider;
/*  w  w  w. ja  v  a  2 s  .co m*/
import android.content.AsyncQueryHandler;
import android.content.ContentValues;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.Toast;

import com.iop.listprovider.helpers.DateHelper;
import com.iop.listprovider.helpers.UIHelper;
import com.iop.listprovider.model.Nota;
import com.iop.listprovider.model.NotaCP;

/**
 * Created by Rafael Iop
 *
 * Activity responsvel por adicionar OU editar uma nota
 *
 */

public class NotaActivity extends ActionBarActivity{

    private UIHelper uiHelper;

    private boolean novaNota;
    private int idNota;

    // Views
    private ImageView ivPrioridade;
    private Spinner spPrioridade;
    private EditText etTitulo;
    private EditText etDescricao;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_nota);

        uiHelper = new UIHelper(this);

        ivPrioridade = (ImageView) findViewById(R.id.iv_prioridade);
        spPrioridade = (Spinner) findViewById(R.id.sp_prioridade);
        etTitulo = (EditText) findViewById(R.id.et_titulo);
        etDescricao = (EditText) findViewById(R.id.et_descricao);

        // Troca a cor da ImageView "ivPrioridade"
        // de acordo com a prioridade selecionada no Spinner "spPrioridade"

        spPrioridade.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                uiHelper.setPrioridades(ivPrioridade, (int) id);
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });

        // Pega as informaes do intent, enviadas pela Activity anterior
        Intent intent = getIntent();
        novaNota = intent.getBooleanExtra("nova", true);

        // Se a nota j existe, carrega os dados da mesma
        if (!novaNota){
            idNota = intent.getIntExtra("id_nota", -1);

            // Busca a nota com o Content Provider
            String[] colunas = { Nota.ID, Nota.PRIORIDADE,
                    Nota.TITULO, Nota.DESCRICAO };

            Cursor c = getContentResolver().query(Uri.parse(NotaCP.CONTENT_URI+"/"+idNota), colunas, null, null, null);
            if (c != null) {
                c.moveToLast();

                idNota = c.getInt(0);
                int idPrioridade = c.getInt(1);
                spPrioridade.setSelection(idPrioridade);

                etTitulo.setText(c.getString(2));
                etDescricao.setText(c.getString(3));

                uiHelper.setPrioridades(ivPrioridade, idPrioridade);
            } else{
                Toast.makeText(this, getResources().getString(R.string.edit_note_request_fail),
                        Toast.LENGTH_SHORT).show();
                finish();
            }
        }
    }

    /**
     * Mtodos responsveis por ADICIONAR uma nota
     */

    private void addNota(){
        // Utilizado para converter a data atual para milisegundos
        DateHelper tempo = new DateHelper();

        // Cria um objeto ContentValues e adiciona valores no mesmo
        // Exemplo: valores.put(COLUNA, CONTEUDO)
        // Exemplo: valores.put("titulo", "Nome da minha nota")

        ContentValues valores = new ContentValues();
        valores.put(Nota.PRIORIDADE, spPrioridade.getSelectedItemPosition());
        valores.put(Nota.DATA, tempo.getHorarioAgora());
        valores.put(Nota.TITULO, etTitulo.getText().toString());
        valores.put(Nota.DESCRICAO, etDescricao.getText().toString());

        // Insero assncrona
        addNotaAsync(valores);

        // Insero sncrona
        //addNotaSync(valores);
    }

    private void addNotaAsync(ContentValues valores){
        Log.e("NOTA", "addNotaAsync()");

        AsyncQueryHandler mHandler = new AsyncQueryHandler(getContentResolver()) {};
        mHandler.startInsert(-1, null, NotaCP.CONTENT_URI, valores);
        finish();
    }

    private void addNotaSync(ContentValues valores){
        Log.e("NOTA", "addNotaSync()");
        Uri resultado = getContentResolver().insert(NotaCP.CONTENT_URI, valores);

        // O mtodo insert do Content Provider retorna o URI com o ID da nota inserida
        // Caso encontre algum problema ao inserir, o URI retornado ser "notas/-1"
        // getLastPathSegment()  usado para pegar o ltimo elemento do URI, que  o ID
        idNota = Integer.parseInt(resultado.getLastPathSegment());

        if (idNota == -1){
            Toast.makeText(this, getResources().getString(R.string.new_note_fail),
                    Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(this, getResources().getString(R.string.new_note_success),
                    Toast.LENGTH_SHORT).show();
            finish();
        }
    }

    /**
     * Mtodos responsveis por EDITAR uma nota
     */

    private void editaNota(){
        // Utilizado para converter a data atual para milisegundos
        DateHelper tempo = new DateHelper();

        // Cria um objeto ContentValues e adiciona valores no mesmo
        // Exemplo: valores.put(COLUNA, CONTEUDO)
        // Exemplo: valores.put("titulo", "Nome da minha nota")

        ContentValues valores = new ContentValues();
        valores.put(Nota.PRIORIDADE, spPrioridade.getSelectedItemPosition());
        valores.put(Nota.DATA, tempo.getHorarioAgora());
        valores.put(Nota.TITULO, etTitulo.getText().toString());
        valores.put(Nota.DESCRICAO, etDescricao.getText().toString());

        // Edio assncrona
        editaNotaAsync(valores);

        // Edio sncrona
        //editaNotaSync(valores);
    }

    private void editaNotaAsync(ContentValues valores){
        Log.e("NOTA", "editaNotaAsync()");

        AsyncQueryHandler mHandler = new AsyncQueryHandler(getContentResolver()) {};
        mHandler.startUpdate(-1, null, Uri.parse(NotaCP.CONTENT_URI+"/"+idNota), valores, null, null);
        finish();
    }

    private void editaNotaSync(ContentValues valores){
        Log.e("NOTA", "editaNotaSync()");

        int resultado = getContentResolver().update(Uri.parse(NotaCP.CONTENT_URI+"/"+idNota), valores, null, null);
        if (resultado == -1){
            Toast.makeText(this, getResources().getString(R.string.edit_note_fail),
                    Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(this, getResources().getString(R.string.edit_note_success),
                    Toast.LENGTH_SHORT).show();
            finish();
        }
    }

    /**
     * MENU (onCreateOptionsMenu) e (onOptionsItemSelected)
     * Define o menu da Activity/ActionBar e suas aes
     */

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.nova_nota, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.action_save_note) {
            if (novaNota) addNota();
            else editaNota();
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}




Java Source Code List

com.iop.listprovider.MainActivity.java
com.iop.listprovider.NotaActivity.java
com.iop.listprovider.NotaLVAdapter.java
com.iop.listprovider.helpers.DBHelper.java
com.iop.listprovider.helpers.DateHelper.java
com.iop.listprovider.helpers.UIHelper.java
com.iop.listprovider.model.NotaCP.java
com.iop.listprovider.model.Nota.java