Vou apresentar mais uma opção de lista de itens, nesse caso, atendendo a pedidos vou criar uma lista de itens e de acordo com um determinado parâmetro a cor do texto será diferente da cor padrão utilizada em todos os itens da lista.
A lista será criada com base em alguns Estados brasileiros e para isso será criada uma classe de POJO para guardar as informações de Estado, Capital e um Status.
O campo de Status servirá para identificar se o estado será pintado com uma cor diferente da cor padrão, caso o campo Status seja igual a "1" a cor dos dados será vermelha caso seja igual a "2" a cor dos dados será branca.
Será necessário criar um Adapter customizado para efetuar esse processo.
Abaixo seguem os fontes utilizados nesse projeto:
Arquivo EstadoPojo.java
package br.com.empresa;
public class EstadoPojo {
private long status;
private String estado;
private String capital;
public void setStatus(long status) {
this.status = status;
}
public long getStatus() {
return status;
}
public void setEstado(String nome) {
this.estado = nome;
}
public String getEstado() {
return estado;
}
public void setCapital(String endereco) {
this.capital = endereco;
}
public String getCapital() {
return capital;
}
}
Arquivo main.java
package br.com.empresa;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import android.widget.Toast;
public class main extends ListActivity {
private SpecialAdapter mAdapter;
public void onListItemClick(ListView parent, View v, int position, long id) {
toast("Você clicou no item : " + String.valueOf(position));
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//definindo variável do tipo EstadoPOJO
EstadoPojo estado;
mAdapter = new SpecialAdapter(this);
//criando a variável estado e atribuindo os valores desejados
estado = new EstadoPojo();
estado.setStatus(2);
estado.setEstado("Minas Gerais");
estado.setCapital("Belo Horizonte");
//adicionando o estado ao Adapter
mAdapter.addItem(estado);
estado = new EstadoPojo();
estado.setStatus(2);
estado.setEstado("Rio Grande do Sul");
estado.setCapital("Porto Alegre");
mAdapter.addItem(estado);
estado = new EstadoPojo();
estado.setStatus(1);
estado.setEstado("Rio Grande do Norte");
estado.setCapital("Natal");
mAdapter.addItem(estado);
estado = new EstadoPojo();
estado.setStatus(2);
estado.setEstado("Amazonas");
estado.setCapital("Manaus");
mAdapter.addItem(estado);
estado = new EstadoPojo();
estado.setStatus(1);
estado.setEstado("Pará");
estado.setCapital("Belém");
mAdapter.addItem(estado);
estado = new EstadoPojo();
estado.setStatus(2);
estado.setEstado("Paraná");
estado.setCapital("Curitiba");
mAdapter.addItem(estado);
estado = new EstadoPojo();
estado.setStatus(2);
estado.setEstado("São Paulo");
estado.setCapital("São Paulo");
mAdapter.addItem(estado);
estado = new EstadoPojo();
estado.setStatus(2);
estado.setEstado("Goiás");
estado.setCapital("Goiânia");
mAdapter.addItem(estado);
estado = new EstadoPojo();
estado.setStatus(2);
estado.setEstado("Santa Catarina");
estado.setCapital("Florianópolis");
mAdapter.addItem(estado);
estado = new EstadoPojo();
estado.setStatus(2);
estado.setEstado("Bahia");
estado.setCapital("Salvador");
mAdapter.addItem(estado);
estado = new EstadoPojo();
estado.setStatus(2);
estado.setEstado("Ceará");
estado.setCapital("Fortaleza");
mAdapter.addItem(estado);
estado = new EstadoPojo();
estado.setStatus(1);
estado.setEstado("Piauí");
estado.setCapital("Teresina");
mAdapter.addItem(estado);
estado = new EstadoPojo();
estado.setStatus(2);
estado.setEstado("Rondônia");
estado.setCapital("Porto Velho");
mAdapter.addItem(estado);
setListAdapter(mAdapter);
}
public void toast (String msg)
{
Toast.makeText (getApplicationContext(), msg, Toast.LENGTH_SHORT).show ();
}
}
Arquivo SpecialAdapter.java
package br.com.empresa;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
public class SpecialAdapter extends BaseAdapter {
private List<EstadoPojo> mData = new ArrayList<EstadoPojo>();
//Classe utilizada para instanciar os objetos do XML
private LayoutInflater mInflater;
Context context;
public SpecialAdapter(Context context) {
this.context = context;
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public void addItem(final EstadoPojo item) {
mData.add(item);
//Atualizar a lista caso seja adicionado algum item
notifyDataSetChanged();
}
@Override
public int getCount() {
return mData.size();
}
@Override
public EstadoPojo getItem(int position) {
return mData.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//O ViewHolder irá guardar a instâncias dos objetos do estado_row
ViewHolder holder;
//Quando o objeto convertView não for nulo nós não precisaremos inflar
//os objetos do XML, ele será nulo quando for a primeira vez que for carregado
if (convertView == null) {
convertView = mInflater.inflate(R.layout.main, null);
//Cria o Viewholder e guarda a instância dos objetos
holder = new ViewHolder();
holder.textEstado = (TextView)convertView.findViewById(R.id.txtEstado);
holder.textCapital = (TextView)convertView.findViewById(R.id.txtCapital);
convertView.setTag(holder);
} else {
//pega o ViewHolder para ter um acesso rápido aos objetos do XML
//ele sempre passará por aqui quando,por exemplo, for efetuado uma rolagem na tela
holder = (ViewHolder)convertView.getTag();
}
holder.textEstado.setText("Estado :" + (CharSequence) mData.get(position).getEstado());
holder.textCapital.setText("Capital :" + (CharSequence) mData.get(position).getCapital());
//Modifica a cor do texto de acordo com a propriedade Status
if (mData.get(position).getStatus() == 1)
{
holder.textEstado.setTextColor(context.getResources().getColor(R.color.red));
holder.textCapital.setTextColor(context.getResources().getColor(R.color.red));
}else{
holder.textEstado.setTextColor(context.getResources().getColor(R.color.white));
holder.textCapital.setTextColor(context.getResources().getColor(R.color.white));
}
return convertView;
}
//Criada esta classe estática para guardar a referência dos objetos abaixo
public static class ViewHolder {
public TextView textEstado;
public TextView textCapital;
}
}
Arquivo main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:text="TextView"
android:id="@+id/txtEstado"
android:gravity="center_vertical"
android:layout_width="wrap_content"
android:layout_height="30sp">
</TextView>
<TextView
android:text="TextView"
android:id="@+id/txtCapital"
android:gravity="center_vertical"
android:layout_width="wrap_content"
android:layout_height="30sp">
</TextView>
</LinearLayout>
Como resultado temos a seguinte imagem:
![]() |
| ListView |
Por enquanto é isso espero que tenham gostado e em breve estarei postando mais discas e tutoriais sobre listview e layout.
Parte 2 : http://escoladeandroid.blogspot.com/2011/11/trabalhando-com-listview-parte-2.html
Parte 3 : http://escoladeandroid.blogspot.com/2011/12/trabalhando-com-listview-parte-3.html
Parte 4 : http://escoladeandroid.blogspot.com/2011/12/trabalhando-com-listview-parte-4.html
Parte 5 : http://escoladeandroid.blogspot.com/2011/12/trabalhando-com-listview-parte-5.html
Parte 6 : http://escoladeandroid.blogspot.com.br/2011/12/android-listview-parte-6.html
Parte 8 : http://escoladeandroid.blogspot.com.br/2012/03/android-listview-parte-8.html
Parte 3 : http://escoladeandroid.blogspot.com/2011/12/trabalhando-com-listview-parte-3.html
Parte 4 : http://escoladeandroid.blogspot.com/2011/12/trabalhando-com-listview-parte-4.html
Parte 5 : http://escoladeandroid.blogspot.com/2011/12/trabalhando-com-listview-parte-5.html
Parte 6 : http://escoladeandroid.blogspot.com.br/2011/12/android-listview-parte-6.html
Parte 8 : http://escoladeandroid.blogspot.com.br/2012/03/android-listview-parte-8.html
Trabalhando com Banco de Dados SQLite:
http://escoladeandroid.blogspot.com/2012/02/android-criando-uma-agenda-de-contatos.html
Desenvolvi o jogo Circus Puzzle Free ele é um quebra-cabeça e está publicado no Android Market, agradeço a todos que baixarem, jogarem e comentarem.
Desenv com qualidade!


3 comentários:
Sinto em lhe dizer que a capital de Goiás é Goiânia, e não Goiania. :)
(Eu até deixaria de lado se não visse que prestou atenção em colocar um acento em Goiás e também em Florianópolis.)
Obrigado pela ajuda.
Já está corrigido!
Como faço para iniciar o listview no ultimo item?
Postar um comentário