Tutorial SQLite #3 - Tela de Listagem
Boa noite!
Dando continuidade na série, hoje vamos alterar a tela inicial do nosso programa, colocando uma listagem dos contatos. Vamos criar a tela que possuirá a listagem dos contatos, activity_listagem.xml:
E vamos também criar um outro xml que servirá para sobrescrever as linhas da listagem que criamos, o xml linha_contato.xml:
Agora vamos criar uma nova classe chamada CadastroActivity e passar tudo o que tem na classe MainActivity para dar lugar a nossa listagem, que passará a ser a tela principal da nossa aplicação.
Bom, como vocês puderam ver, instanciei uma classe chamada ContatoAdapter, que serve para criar cada uma das linhas da listagem, e agora vamos criar esta classe (dentro da mesma pasta da classe ContatoDAO):
Bom, faltou apenas declarar a nova classe, (CadastroActivity), e tudo ok.
Qualquer dúvida, clique aqui para baixar o tutorial. Até a próxima postagem!!
Dando continuidade na série, hoje vamos alterar a tela inicial do nosso programa, colocando uma listagem dos contatos. Vamos criar a tela que possuirá a listagem dos contatos, activity_listagem.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="@dimen/activity_vertical_margin" > <Button android:id="@+id/btCadastro" android:text="Cadastros" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" /> <ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@id/btCadastro" /> </RelativeLayout>
E vamos também criar um outro xml que servirá para sobrescrever as linhas da listagem que criamos, o xml linha_contato.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="7dp" > <TextView android:id="@+id/tvTelefone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Telefone" android:layout_alignParentTop="true" android:layout_alignParentRight="true" /> <TextView android:id="@+id/tvNome" android:layout_width="match_parent" android:layout_height="wrap_content" android:textStyle="bold" android:text="Nome Contato" android:layout_toLeftOf="@id/tvTelefone" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" /> <TextView android:id="@+id/tvEmail" android:layout_width="match_parent" android:layout_height="wrap_content" android:textStyle="italic" android:text="email@contato.com.br" android:layout_alignParentLeft="true" android:layout_below="@id/tvNome" android:layout_toLeftOf="@id/tvTelefone" /> </RelativeLayout>
Agora vamos criar uma nova classe chamada CadastroActivity e passar tudo o que tem na classe MainActivity para dar lugar a nossa listagem, que passará a ser a tela principal da nossa aplicação.
public class MainActivity extends ListActivity { private ContatoDAO contatoDAO; Listcontatos; ContatoAdapter adapter; BaseDAO baseDAO; int posicao = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_listagem); baseDAO = new BaseDAO(this); Button btCadastro = (Button) findViewById(R.id.btCadastro); btCadastro.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { startActivity(new Intent(MainActivity.this, CadastroActivity.class)); } }); } @Override protected void onResume() { contatoDAO = new ContatoDAO(this); contatoDAO.open(); contatos = contatoDAO.lerContatos(); adapter = new ContatoAdapter(this, contatos); setListAdapter(adapter); super.onResume(); } }
Bom, como vocês puderam ver, instanciei uma classe chamada ContatoAdapter, que serve para criar cada uma das linhas da listagem, e agora vamos criar esta classe (dentro da mesma pasta da classe ContatoDAO):
public class ContatoAdapter extends BaseAdapter { private Context context; private Listcontatos; private LayoutInflater inflater; public ContatoAdapter(Context context, List contatos) { super(); this.context = context; this.contatos = contatos; this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public void notifyDataSetChanged() { try { super.notifyDataSetChanged(); } catch (Exception e) { trace("Erro: " + e.getMessage()); } } private void trace(String msg) { toast(msg); } public void toast(String msg) { Toast.makeText(context, msg, Toast.LENGTH_SHORT).show(); } public int getCount() { return contatos.size(); } public void remove(final Contato contato) { this.contatos.remove(contato); } public void add(final Contato contato) { this.contatos.add(contato); } public Object getItem(int position) { return contatos.get(position); } public long getItemId(int position) { return position; } public View getView(int position, View convertView, ViewGroup viewGroup2) { try { Contato contato = contatos.get(position); ViewHolder holder; if (convertView == null) { convertView = inflater.inflate(layout.linha_contato, null); holder = new ViewHolder(); holder.tvNome = (TextView) convertView.findViewById(id.tvNome ); holder.tvTelefone = (TextView) convertView.findViewById(id.tvTelefone); holder.tvEmail = (TextView) convertView.findViewById(id.tvEmail); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.tvNome.setText(contato.getNome()); holder.tvTelefone.setText(contato.getTelefone()); holder.tvEmail.setText(contato.getEmail()); return convertView; } catch (Exception e) { trace("Erro: " + e.getMessage()); } return convertView; } static class ViewHolder { public TextView tvNome; public TextView tvTelefone; public TextView tvEmail; } }
Bom, faltou apenas declarar a nova classe, (CadastroActivity), e tudo ok.
Qualquer dúvida, clique aqui para baixar o tutorial. Até a próxima postagem!!
Cara, continua seu trabalho!!!
ResponderExcluirMuito obrigado
Não entendi muito bem a parte do cadastro. Fiquei perdida.
ResponderExcluirque bagunça vai e volta
ResponderExcluir