Bom dia pessoal, tenho uma lista em uma tela usando um layout simples, conforme abaixo:
[code]<?xml version=“1.0” encoding=“utf-8”?>
<TableLayout xmlns:android=“http://schemas.android.com/apk/res/android"
android:layout_height=“fill_parent” android:layout_width=“fill_parent"
android:background=”#ffffff”>
<TableRow >
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width=“fill_parent” android:layout_height=“wrap_content”
>
<TextView android:id="@+id/valor"
android:layout_height="30dip" android:layout_width="130sp"
/>
<TextView android:id="@+id/data"
android:layout_height="30dip" android:layout_width="80sp"
/>
</LinearLayout>
</TableRow>
</TableLayout>[/code]
[code]package br.com.clausoftware;
import java.text.ParseException;
import java.util.List;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ListView;
import android.widget.Toast;
import br.com.clausoftware.banco.BuscarReceita;
import br.com.clausoftware.banco.EditarReceita;
import br.com.clausoftware.banco.Receita;
import br.com.clausoftware.banco.RecetiaListAdapter;
import br.com.clausoftware.banco.RepositorioConta;
import br.com.clausoftware.banco.RepositorioContaScript;
public class CadastroReceita extends ListActivity {
static final int DATE_DIALOG_ID = 0;
protected static final int INSERIR_EDITAR = 1;
protected static final int BUSCAR = 2;
public static RepositorioConta repositorio;
private List<Receita> receitasList;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
repositorio = new RepositorioContaScript(this);
try {
atualizarLista();
for(int i = 0; i< 2; i++){
Toast.makeText(CadastroReceita.this, "Clique na Conta para editar, ou abra o menu para outras operações!", Toast.LENGTH_SHORT).show();
}
} catch (ParseException e) {
e.printStackTrace();
}
}
protected void atualizarLista() throws ParseException {
// Pega a lista de contas e exibe na tela
receitasList = repositorio.listarReceitas();
// Adaptador de lista customizado para cada linha de um conta
setListAdapter(new RecetiaListAdapter(this, receitasList));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(0, INSERIR_EDITAR, 0, "Inserir Novo").setIcon(R.drawable.novo);
menu.add(0, BUSCAR, 0, "Buscar").setIcon(R.drawable.pesquisar);
return true;
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
// Clicou no menu
switch (item.getItemId()) {
case INSERIR_EDITAR:
// Abre a tela com o formulário para adicionar
startActivityForResult(new Intent(this, EditarReceita.class), INSERIR_EDITAR);
break;
case BUSCAR:
// Abre a tela para buscar o conta pelo nome
startActivity(new Intent(this, BuscarReceita.class));
break;
}
return true;
}
@Override
protected void onListItemClick(ListView l, View v, int posicao, long id) {
super.onListItemClick(l, v, posicao, id);
editarRececetia(posicao);
}
// Recupera o id do conta, e abre a tela de edição
protected void editarRececetia(int posicao) {
// Usuário clicou em algum conta da lista
// Recupera a conta selecionado
Receita receita = receitasList.get(posicao);
// Cria a intent para abrir a tela de editar
Intent it = new Intent(this, EditarReceita.class);
// Passa o id do çonta como parâmetro
it.putExtra("_id", receita.getId());
// Abre a tela de edição
startActivityForResult(it, INSERIR_EDITAR);
}
@Override
protected void onActivityResult(int codigo, int codigoRetorno, Intent it) {
super.onActivityResult(codigo, codigoRetorno, it);
// Quando a activity Editarconta retornar, seja se foi para adicionar vamos atualizar a lista
if (codigoRetorno == RESULT_OK) {
// atualiza a lista na tela
try {
atualizarLista();
} catch (ParseException e) {
e.printStackTrace();
}
}
}
@Override
protected void onDestroy() {
super.onDestroy();
// Fecha o banco
repositorio.fechar();
}
}[/code]
[code]package br.com.clausoftware.banco;
import java.util.List;
import br.com.clausoftware.R;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
/**
- Adapter customizado para exibir contas.
- @author claudemir
*/
public class RecetiaListAdapter extends BaseAdapter {
private Context context;
private List<Receita> lista;
public RecetiaListAdapter(Context context, List<Receita> lista) {
this.context = context;
this.lista = lista;
}
public int getCount() {
return lista.size();
}
public Object getItem(int position) {
return lista.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
// Recupera a Conta da posição atual
Receita r = lista.get(position);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.receita_linha_tabela, null);
// Atualiza o valor do TextView
TextView valor = (TextView) view.findViewById(R.id.valor);
valor.setText(String.valueOf(r.getValor()));
TextView data = (TextView) view.findViewById(R.id.data);
data.setText(r.getData());
return view;
}
}[/code]
Bom, agora eu precisa acrescentar um campo, em que o usuário vai entrar com a data, e então eu vou aplicar um “filtro”, e recarregr a “tela”, qual tecnica eu usaria? tentei colocar um campo fixo, mais da vários erros, eu acho que a abordagem deste adapter não é a indicada, mas não encontrei a
tecnica usada para ter um filtro e lista na mesma tela, alguém poderia me indicar o que uso?