Android - ListView Customizada
De Aulas
Links Relacionados: Dispositivos Móveis
Recursos
Descrição
Criar uma Empty Activity com uma listView
activity_main.xml
1<?xml version="1.0" encoding="utf-8"?>
2<android.support.constraint.ConstraintLayout
3 xmlns:android="http://schemas.android.com/apk/res/android"
4 xmlns:app="http://schemas.android.com/apk/res-auto"
5 xmlns:tools="http://schemas.android.com/tools"
6 android:layout_width="match_parent"
7 android:layout_height="match_parent"
8 tools:context="com.saulopz.customlistviewa.MainActivity">
9
10 <ListView
11 android:id="@+id/listView"
12 android:layout_width="368dp"
13 android:layout_height="495dp"
14 app:layout_constraintTop_toTopOf="parent"
15 android:layout_marginTop="8dp"
16 android:layout_marginRight="8dp"
17 app:layout_constraintRight_toRightOf="parent"
18 android:layout_marginLeft="8dp"
19 app:layout_constraintLeft_toLeftOf="parent"
20 app:layout_constraintBottom_toBottomOf="parent"
21 android:layout_marginBottom="8dp"/>
22</android.support.constraint.ConstraintLayout>
my_list.xml
Criar um layout para ser utilizado como elementos da listview;
1<?xml version="1.0" encoding="utf-8"?>
2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 xmlns:app="http://schemas.android.com/apk/res-auto"
4 android:layout_width="match_parent"
5 android:layout_height="match_parent"
6 android:orientation="horizontal">
7
8 <ImageView
9 android:id="@+id/imageView"
10 android:layout_width="50dp"
11 android:layout_height="50dp"
12 app:srcCompat="@drawable/java"/>
13
14 <LinearLayout
15 android:layout_width="match_parent"
16 android:layout_height="50dp"
17 android:orientation="vertical">
18
19 <TextView
20 android:id="@+id/textViewNome"
21 android:layout_width="match_parent"
22 android:layout_height="wrap_content"
23 android:layout_weight="1"
24 android:text="Nome"
25 android:textSize="24sp"/>
26
27 <TextView
28 android:id="@+id/textViewTelefone"
29 android:layout_width="match_parent"
30 android:layout_height="wrap_content"
31 android:layout_weight="1"
32 android:text="Telefone"
33 android:textAlignment="textEnd"/>
34 </LinearLayout>
35</LinearLayout>
Contato.java
1package com.saulopz.customlistviewa;
2
3class Contato {
4 String nome;
5 String fone;
6 int imagem;
7
8 Contato(String n, String f, int i) {
9 nome = n;
10 fone = f;
11 imagem = i;
12 }
13}
ListAdapter.java
Para que possamos utilizar uma ListView customizada, é necessário implementarmos nosso próprio adapter para ela.
1package com.saulopz.customlistviewa;
2
3import android.app.Activity;
4import android.view.View;
5import android.view.ViewGroup;
6import android.widget.BaseAdapter;
7import android.widget.ImageView;
8import android.widget.TextView;
9
10import java.util.List;
11
12
13class ListAdapter extends BaseAdapter {
14 private final List<Contato> contatos;
15 private final Activity activity;
16
17 ListAdapter(List<Contato> contatos, Activity activity) {
18 this.contatos = contatos;
19 this.activity = activity;
20 }
21
22 @Override
23 public int getCount() {
24 return contatos.size();
25 }
26
27 @Override
28 public Object getItem(int i) {
29 return contatos.get(i);
30 }
31
32 @Override
33 public long getItemId(int i) {
34 return 0;
35 }
36
37 @Override
38 public View getView(int i, View view, ViewGroup viewGroup) {
39 View v = view;
40 if (v == null) {
41 v = activity.getLayoutInflater().inflate(R.layout.my_list, viewGroup, false);
42 }
43 Contato contato = contatos.get(i);
44 TextView name = (TextView) v.findViewById(R.id.textViewNome);
45 TextView fone = (TextView) v.findViewById(R.id.textViewTelefone);
46 ImageView imagem = (ImageView) v.findViewById(R.id.imageView);
47 name.setText(contato.nome);
48 fone.setText(contato.fone);
49 switch (contato.imagem) {
50 case 0:
51 imagem.setImageResource(R.drawable.java);
52 break;
53 case 1:
54 imagem.setImageResource(R.drawable.c);
55 break;
56 case 2:
57 imagem.setImageResource(R.drawable.go);
58 break;
59 }
60 return v;
61 }
62}
MainActivity.java
1package com.saulopz.customlistviewa;
2
3import android.os.Bundle;
4import android.support.v7.app.AppCompatActivity;
5import android.widget.ArrayAdapter;
6import android.widget.BaseAdapter;
7import android.widget.ListView;
8
9import java.util.ArrayList;
10import java.util.List;
11
12public class MainActivity extends AppCompatActivity {
13 ListView listView;
14 List<Contato> contatos = new ArrayList<>();
15 BaseAdapter adapter;
16
17 @Override
18 protected void onCreate(Bundle savedInstanceState) {
19 super.onCreate(savedInstanceState);
20 setContentView(R.layout.activity_main);
21
22 contatos.add(new Contato("Andre", "9234234", 0));
23 contatos.add(new Contato("Beatriz", "1235134", 1));
24 contatos.add(new Contato("Carla", "3323423", 2));
25
26 adapter = new ListAdapter(contatos, this);
27 listView = (ListView) findViewById(R.id.listView);
28 listView.setAdapter(adapter);
29 }
30}
Atividade
- Faça um aplicativo e crie uma ListView customizada.
- Gerencie os dados adicionando novas informações com um botão adicionar na activity main.
- Quando clicar no botão adicionar, abre uma nova activity, insere os dados e quando clicar em gravar, adiciona as informações na ListView da activity main.
- Quando clicar no item da listview, mostra as informações editadas em uma janelinha de dialogo.
- Quando segurar clicado um item da listview, exclui o item.