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