Android - Ajuda em criação de APP

Boa noite galera, vim aqui procurando ajuda para a minha situação, que no momento está BEM complicada…

Estudo em uma faculdade de TI e neste semestre passei por alguns problemas de saúde e família e acabei me prejudicando um pouco no estudo, mas até aí nada demais,
vou conseguir passar nas matérias, exceto uma, e aí está meu problema (e não, eu não vim pedir pra me darem algo pronto ou para fazerem meu trabalho)
Neste semestre tive uma matéria de programação para Mobile focada em Android, só que sendo bem direto, eu posso afirmar que não sei absolutamente NADA de Android
(o conteúdo mal e mal tocou nisto, aprendi mesmo foi a instalar o SDK)

Preciso entregar até semana que vem (já estou atrasado) um projeto “simples” que envolva algo como criar uma lista de endereços/jogos/livros que permita listar, pesquisar, adicionar e remover ítens. O sistema também deveria ter login e senha para usuários, mas vejo que serei obrigado a deixar isso de lado, pois eu não tenho absolutamente NENHUMA idéia de como o fazer pois isto não foi ensinado.

Então, vim aqui pedir ajuda para tentar aprender o suficiente para fazer a APP (ou o que for possível) até semana que vem. Qualquer tipo de ajuda é bem-vinda, no momento eu tenho apenas uma apostilha que comecei a que ensina algumas coisas e sei que o Android usa um SQL Lite (que não sei ainda como usar). Já tenho Eclipse e o SDK aqui.

Obrigado pela atenção e boa noite!

O Prazo é mto curto para fazer um projeto sem conhecer a tecnologia!

Mas de qualquer forma da uma olhada nessa apostila http://apostilaandroid.ueuo.com/inicio.php q vai te ajudar bastante, ela se não me engano tem uns projetinhos.

Nunca fiz eles para ver se realmente funcionam mas ja li parece ser um material bem legal “INTRODUTÓRIO”.

Boa Sorte! :lol:

Cara a apostila do curso da Caelum tem exemplos do projeto que você quer fazer.

Se você conseguir o Livro Google Android do Lecheta ele também tem vários exemplos práticos de como fazer aplicativos. O prazo para fazer o projeto sem conhecer a tecnologia realmente esta muito curto, mais se você se esforçar e não dormir (brincadeira) você consegue.

A apostila que o Rotiv te enviou também é muito boa, mais somente para introdução.

Oi, obrigado MESMO pela ajuda pessoal (e desculpa não ter agradecido antes)… graças a essa apostilha eu consegui aprender algo, mesmo sendo em uma correria. O que me ferrou mesmo foi o fato de que não sei nada de SQL e fui obrigado a procurar algum vídeo ensinando, no caso os do cafecomjava. Nunca mexi com SQL no java também por não ter tido nenhuma aula relacionada, então grande parte daí fiz meio que às cegas. Eu faria tranquilamente uma lista com variáveis, mas o problema é que o professor exige persistencia de dados.

Bom… Pois é. São quatro horas da madrugada e vou dormir pelo menos umas 3 horas e acordar para terminar. O problema é que me empaquei agora com uma linha do código, que nessas altas horas eu já não sei nem exatamente o que está errado e é exatamente da parte de criação do banco. Se for possível darem uma olhada, agradeço. Minha deadline é agora nessa noite de quinta, até lá não falta muito.

Como no projeto são umas 5 classes, vou postar as duas que tem relação com o problema. Alguns dos botões chamam o mesmo carregar tela pois ainda não tive tempo de criar as funções deles.

Classe Principal do APP

package br.com.android;
import br.com.android.User;


import android.app.Activity;
import android.os.Bundle;
import android.view.*;
import android.widget.*;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class DroidLibris extends Activity {
	public void CarregaTelaPrincipal() {
		setContentView(R.layout.menu);
		Button btadlivro = (Button) findViewById(R.id.btadlivro);
		Button btlistalivro = (Button) findViewById(R.id.btlistalivro);
		Button btaduser = (Button) findViewById(R.id.btaduser);
		Button btlistauser = (Button) findViewById(R.id.btlistauser);
		btadlivro.setOnClickListener(new View.OnClickListener(){
			public void onClick(View arg0) {
				CarregaTela2();
			}
		});
		btlistalivro.setOnClickListener(new View.OnClickListener(){
			public void onClick(View arg0) {
				CarregaTela2();
			}
		});
		btaduser.setOnClickListener(new View.OnClickListener(){
			public void onClick(View arg0) {
				CarregaTela4();
			}
		});
		btlistauser.setOnClickListener(new View.OnClickListener(){
			public void onClick(View arg0) {
				CarregaTela2();
			}
		});
	}
	public void CarregaTela2() {
		setContentView(R.layout.novolivro);
		Button btcrialivro = (Button) findViewById(R.id.btcrialivro);
		Button btvoltalivro = (Button) findViewById(R.id.btvoltalivro);
		btcrialivro.setOnClickListener(new View.OnClickListener(){
				public void onClick(View arg0) {

				}
		});
		btvoltalivro.setOnClickListener(new View.OnClickListener(){
			public void onClick(View arg0) {
				CarregaTelaPrincipal();
			}
		});
	}
	public void CarregaTela4() {
		setContentView(R.layout.novocontato);
		Button btcriauser = (Button) findViewById(R.id.btcriauser);
		Button btvoltauser = (Button) findViewById(R.id.btvoltauser);
		btcriauser.setOnClickListener(new View.OnClickListener(){
				public void onClick(View arg0) {
					User user = new User();
				//	UserDao dao = new UserDao(this); 
//NESTA linha ^^^^ eu obtenho o erro The constructor UserDao(new View.OnClickListener(){}) is undefined. 
//Provavelmente é um erro idiota por minha parte, mas minha cabeça já não está funcionando direito
					EditText nome = (EditText) findViewById(R.id.eduser);
					EditText senha = (EditText) findViewById(R.id.edsenha);
					user.setNome(nome.getText().toString());
					user.setSenha(senha.getText().toString());
					
					dao.save(user);
				}
		});
		btvoltauser.setOnClickListener(new View.OnClickListener(){
			public void onClick(View arg0) {
				CarregaTelaPrincipal();
			}
		});
	}
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		CarregaTelaPrincipal();
		}
}

Classe UserDAO

package br.com.android;

import java.util.ArrayList;

import br.com.android.User;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

public class UserDao {
	private SQLiteDatabase db;
	private static final String SCRIPT_DATABASE_DELETE = "DROP TABLE IF EXISTS users";
	private static final String TABELA_USER = "users";
	private static final String[] SCRIPT_DATABASE_CREATE = new String[] {"CREATE TABLE users ( _id integer primary "+
		" key autoincrement, nome text not null, senha text not null)",
		"INSERT INTO "+TABELA_USER+"(nome, senha) values('Jose Miguel','56575')",
		"INSERT INTO "+TABELA_USER+"(nome, senha) values('Enri Arias','6969')",};
	private static final String NOME_BANCO = "biblioteca";
	private static final int VERSAO_BANCO = 1;
	private SQLiteHelper dbH;
	
	private static final String ID = "_id";
	private static final String NOME = "nome";
	private static final String SENHA = "senha";
	
	private static final String [] COLUNAS = {UserDao.ID, UserDao.NOME, UserDao.SENHA};
	
	public UserDao(Context ctx) {
		dbH = new SQLiteHelper(ctx, UserDao.NOME_BANCO, UserDao.VERSAO_BANCO,  UserDao.SCRIPT_DATABASE_CREATE, UserDao.SCRIPT_DATABASE_DELETE);
		db  = dbH.getWritableDatabase();
	}
	
	public void save(User user){
		ContentValues valores = new ContentValues();
		valores.put("nome", user.getNome());
		valores.put("senha", user.getSenha());
		db.insert(TABELA_USER, null, valores);
	}
	
	public void update(User user){
		ContentValues valores = new ContentValues();
		valores.put("nome", user.getNome());
		valores.put("senha", user.getSenha());
		db.update(TABELA_USER, valores, "_id=?", new String[]{user.getId()+""});
	}
	
	public void delete(int id){
		db.delete(TABELA_USER, "_id=?", new String[]{id+""});
	}
	
	public ArrayList<User> listar(){
		ArrayList<User> users = new ArrayList<User>();
		Cursor c = db.query(true, TABELA_USER, UserDao.COLUNAS, null, null, null, null, null, null);
		if(c.getCount() > 0){
			c.moveToFirst();
			do{	
				User user = new User();
				user.setId(c.getInt(0));
				user.setNome(c.getString(1));
				user.setSenha(c.getString(2));
				users.add(user);
			}while(c.moveToNext());
		}
		return users;
	}
	
	public User getUser(long id){
		Cursor c = db.query(true, TABELA_USER, UserDao.COLUNAS, "_id != ?", new String []{id+""}, null, null, null, null);
		User user = null;
		if(c.getCount() > 0){	
				user = new User();
				c.moveToFirst();
				user.setId(c.getInt(0));
				user.setNome(c.getString(1));
				user.setSenha(c.getString(2));
		}
		return user;
	}

}

Cara testa assim, não tive tempo de testar mais deve funcionar.


public class UserDao {

	private static final String DATABASE_NAME = "programa_xyz";
	private static final String MESSAGE_TABLE = "usuarios";
	private static final int DATABASE_VERSION = 1;
	private Context context;
	private SQLiteDatabase db;

	private static final String MESSAGES_COLUMNS[] = { "id", "name", "password" };

	public UserDao(Context context) {
		this.context = context;
		OpenHelper openHelper = new OpenHelper(this.context);
		this.db = openHelper.getWritableDatabase();
	}

	public void insert(Usuario usuario) {
		ContentValues values = new ContentValues();
		
		values.put("name", message.getTitle());
		values.put("password", message.getShortMessage());
				
		db.insert(MESSAGE_TABLE, null, values);
	}

	public List<Message> getListUsers() {
		List<Usuario> usuarios = new ArrayList<Usuario>();
		Cursor c = db.query(MESSAGE_TABLE, MESSAGES_COLUMNS, null, null, null, null, null);

		try {
			while (c.moveToNext()) {
				Usuario usuario = new Usuario();
				
				usuario.setId(c.getLong(c.getColumnIndex("id")));
				usuario.setName(c.getString(c.getColumnIndex("name")));
				usuario.setPassword(c.getString(c.getColumnIndex("password")));
								
				usuarios.add(usuario);
			}
		} catch (Exception e) {
			Log.e(TAG_LOG, e + "Erro ao carregar a lista");
		} finally {
			c.close();
		}

		return usuarios;
	}

	public boolean hasMessage(Usuario usuario) {
		Cursor c = db.query(MESSAGE_TABLE, MESSAGES_COLUMNS, null, null, null, null, null);

		try {
			while (c.moveToNext()) {
				if (c.getString(c.getColumnIndex("name")).equals(usuario.getName()) || c.getString(c.getColumnIndex("password")).equals(usuario.getPassword())) {
					return true;
				}
			}
		} catch (Exception e) {
			Log.e(TAG_LOG, e + "Erro xyz");
		} finally {
			c.close();
		}

		return false;
	}

	public void delete(Usuario usuario) {
		db.delete(MESSAGE_TABLE, "id=?", new String[] { usuario.getId().toString() });
	}

	public void deleteAll() {
		db.delete(MESSAGE_TABLE, null, null);
	}

	public void upDate(Usuario usuario) {
		ContentValues values = new ContentValues();
		values.put("name", usuario.getName());
		values.put("password", usuario.getPassword());
		db.update(MESSAGE_TABLE, values, "id=?", new String[] { usuario.getId().toString() });
	}

	private static class OpenHelper extends SQLiteOpenHelper {
		OpenHelper(Context context) {
			super(context, DATABASE_NAME, null, DATABASE_VERSION);
		}

		@Override
		public void onCreate(SQLiteDatabase db) {
			StringBuilder messageTable = createMessageTable();
			db.execSQL(messageTable.toString());
		}

		@Override
		public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
			StringBuilder sb = new StringBuilder();
			sb.append("DROP TABLE IF EXISTS " + MESSAGE_TABLE);
			db.execSQL(sb.toString());
			onCreate(db);
		}

		public StringBuilder createMessageTable() {
			StringBuilder sb = new StringBuilder();
			sb.append("CREATE TABLE " + MESSAGE_TABLE + " ");
			sb.append("(id INTEGER PRIMARY KEY, ");
			sb.append(" name TEXT, ");
			sb.append(" password TEXT);");
			return sb;
		}
	}
}

Valeu, estou dando uma olhada. Funcionar direto não funciona, mas vou ver se rola com uma adaptção.