Gostaria de salvar o aluno na lista dinamicamente, só que em memoria , sem a necessidade de criar o banco. Alguém pode me ajudar?
Obs: Gostaria de fazer igual foi mencionado no video 02 - adicionando aluno na lista (0:40)
Gostaria de salvar o aluno na lista dinamicamente, só que em memoria , sem a necessidade de criar o banco. Alguém pode me ajudar?
Obs: Gostaria de fazer igual foi mencionado no video 02 - adicionando aluno na lista (0:40)
Oi Lucas, tudo bem ?
A sua lista precisaria ser algo disponibilizado em todas as suas telas.
Há como fazer isso colocando numa classe chamada Application que representa sua aplicação como um todo, ai no momento de por na tela você usa a lista e para salvar também.
public class CadastroApp extends Application {
List<Aluno> alunos = new ArrayList<>();
public List<Aluno> getLista(){
return alunos;
}
public void add(Aluno a){
alunos.add(a);
}
}
Só não pode esquecer de cadastrar no manifest, que já possui a tag application, você só precisa falar que tem uma classe que vai representa-la usando o atributo name igual das activities.
Para ter acesso a application nas activities você pode chamar o método getApplication()
e fazer um cast para o seu tipo.
Espero ter ajudado.
Abraços
Bom dia, ainda estou iniciando na programação...
Possuo o seguinte código:
Class Categoria (código abaixo)
public class Categoria {
private String codigo;
private String descricao;
private String ativo;
public String getCodigo() { return codigo; }
public void setCodigo(String codigo) {
this.codigo = codigo;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public String getAtivo() {
return ativo;
}
public void setAtivo(String ativo) {
this.ativo = ativo;
}
}
FormularioCategoriaHelper (codigo abaixo)
public class FormularioCategoriaHelper {
private final EditText campoCodigo;
private final EditText campoDescricao;
private final EditText campoAtivo;
public FormularioCategoriaHelper(FormularioCategoriaActivity activity) {
campoCodigo = (EditText) activity.findViewById(R.id.formulario_categoria_codigo);
campoDescricao = (EditText) activity.findViewById(R.id.formulario_categoria_descricao);
campoAtivo = (EditText) activity.findViewById(R.id.formulario_categoria_ativo);
}
public Categoria pegaCategoria() {
Categoria categoria = new Categoria();
categoria.setCodigo(campoCodigo.getText().toString());
categoria.setDescricao(campoDescricao.getText().toString());
categoria.setAtivo(campoAtivo.getText().toString());
return categoria;
}
}
FormularioCategoriaActivity (abaixo)
public class FormularioCategoriaActivity extends AppCompatActivity {
private FormularioCategoriaHelper helper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_formulario_categoria);
helper = new FormularioCategoriaHelper(this);
Button botaoSalvar = (Button) findViewById(R.id.formulario_categoria_salvar);
botaoSalvar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Categoria categoria = helper.pegaCategoria();
Toast.makeText(FormularioCategoriaActivity.this, "Categoria " + categoria.getDescricao() + " cadastrada!", Toast.LENGTH_SHORT).show();
finish();
}
});
}
}
ListasCategoriasActivity (abaixo)
public class ListaCategoriasActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lista_categorias);
String[] categorias = {"Esporte", "Comestivel", "Tecnologia",};
ListView listaCategorias = (ListView) findViewById(R.id.lista_categorias);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, categorias);
listaCategorias.setAdapter(adapter);
Button novaCategoria = (Button) findViewById(R.id.nova_categoria);
novaCategoria.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intentVaiPraCategoria = new Intent(ListaCategoriasActivity.this, FormularioCategoriaActivity.class);
startActivity(intentVaiPraCategoria);
}
});
}
}
Meu programa está igual o do curso. Você me ajudar onde eu colocaria essa classe que você me passou e como eu faria ali no arraylist do ListaCategoriasActivity?
Lucas,
A ideia é você criar uma classe da mesma forma que fez com todas as demais, mas ela vai herdar de Application
.
E para recuperar a listagem você faria algo assim :
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lista_categorias);
CadastroApp app = (CadastroApp) getApplication();
List<Categoria> categorias = app.getLista();
// usar a listagem
}
}
Espero ter ajudado.
Abraços
"Só não pode esquecer de cadastrar no manifest, que já possui a tag application, você só precisa falar que tem uma classe que vai representa-la usando o atributo name igual das activities."
Como exatamente eu faria isso? Fui la no manifests e nos argumentos da , que já existe, eu adiciono o que?
A estrutura deve estar assim :
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
Você precisa fazer o seguinte :
<application
android:name=".SuaApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
Beleza, funcionou!! Valeu pela atenção! Abs