Obrigado pela atenção
Estou estudando pelo livro Android da Casa do Código e travei na criação da progressBar com esse erro:
10-09 08:14:53.581: E/AndroidRuntime(301): FATAL EXCEPTION: main
10-09 08:14:53.581: E/AndroidRuntime(301): java.lang.IllegalStateException: android.widget.ProgressBar is not a view that can be bounds by this SimpleAdapter
10-09 08:14:53.581: E/AndroidRuntime(301): at android.widget.SimpleAdapter.bindView(SimpleAdapter.java:195)
10-09 08:14:53.581: E/AndroidRuntime(301): at android.widget.SimpleAdapter.createViewFromResource(SimpleAdapter.java:126)
10-09 08:14:53.581: E/AndroidRuntime(301): at android.widget.SimpleAdapter.getView(SimpleAdapter.java:114)
10-09 08:14:53.581: E/AndroidRuntime(301): at android.widget.AbsListView.obtainView(AbsListView.java:1315)
10-09 08:14:53.581: E/AndroidRuntime(301): at android.widget.ListView.makeAndAddView(ListView.java:1727)
10-09 08:14:53.581: E/AndroidRuntime(301): at android.widget.ListView.fillDown(ListView.java:652)
10-09 08:14:53.581: E/AndroidRuntime(301): at android.widget.ListView.fillFromTop(ListView.java:709)
Esta é a ActivityLlistViagem
package br.com.casadocodigo.boaviagem;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ProgressBar;
import android.widget.SimpleAdapter;
import android.widget.SimpleAdapter.ViewBinder;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.TextView;
public class ViagemListActivity extends ListActivity implements OnItemClickListener,
OnClickListener, ViewBinder {
private List<Map<String, Object>> viagens;
private AlertDialog alertDialog;
private AlertDialog dialogConfirmacao;
private int viagemSelecionada;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
String[] de = {"imagem","destino","data","total", "barraProgresso"};
int[] para = {R.id.tipoViagem, R.id.destino, R.id.data, R.id.valor, R.id.barraProgresso};
SimpleAdapter adapter = new SimpleAdapter(this, listarViagens(), R.layout.lista_viagem, de, para);
setListAdapter(adapter);
getListView().setOnItemClickListener(this);
ListView listView = getListView();
listView.setOnItemClickListener(this);
this.alertDialog = criarAlertDialog();
this.dialogConfirmacao = criaDialogConfirmacao();
}
private List<Map<String, Object>> listarViagens(){
viagens = new ArrayList<Map<String, Object>>();
Map<String, Object> item = new HashMap<String, Object>();
item.put("imagem", R.drawable.negocios);
item.put("destino", "São Paulo");
item.put("data", "02/02/2012 a 04/02/2012");
item.put("total", "Gasto total R$ 314,98");
item.put("barraProgresso", new Double[]{500.0, 450.0, 314.98});
viagens.add(item);
item = new HashMap<String, Object>();
item.put("imagem", R.drawable.lazer);
item.put("destino", "Maceió");
item.put("data","14/05/2012 a 22/05/2012");
item.put("total","Gasto total R$ 25834,67");
item.put("barraProgresso2", new Double[]{500.0, 450.0, 314.98});
viagens.add(item);
return viagens;
}
public void onItemClick(AdapterView<?> parente, View view, int position, long id){
this.viagemSelecionada = position;
alertDialog.show();
// Map<String, Object> map = viagens.get(position);
// String destino = (String) map.get("destino");
// String mensagem = "Viagem selecionada" + destino;
// Toast.makeText(getApplicationContext(), mensagem, Toast.LENGTH_SHORT).show();
// startActivity(new Intent(this, GastoListActivity.class));
}
@Override
public void onClick(DialogInterface dialog, int item){
switch (item) {
case 0:
startActivity(new Intent(this, ViagemActivity.class));
break;
case 1:
startActivity(new Intent(this, GastoActivity.class));
break;
case 2:
startActivity(new Intent(this, GastoListActivity.class));
break;
case 3:
dialogConfirmacao.show();
break;
case DialogInterface.BUTTON_POSITIVE:
viagens.remove(viagemSelecionada);
getListView().invalidateViews();
break;
case DialogInterface.BUTTON_NEGATIVE:
dialogConfirmacao.dismiss();
break;
default:
break;
}
}
private AlertDialog criarAlertDialog(){
final CharSequence[] items = {
getString(R.string.editar),
getString(R.string.novo_gasto),
getString(R.string.gastos_realizados),
getString(R.string.remover)};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(R.string.opcoes);
builder.setItems(items, this);
return builder.create();
}
private AlertDialog criaDialogConfirmacao(){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(R.string.confirmacao_exclusao_viagem);
builder.setPositiveButton(getString(R.string.sim), this);
builder.setNegativeButton(R.string.nao, this);
return builder.create();
}
@Override
public boolean setViewValue(View view, Object data, String textRepresentation){
if(view.getId() == R.id.barraProgresso){
Double valores[] = (Double[]) data;
ProgressBar progressBar = (ProgressBar) view;
progressBar.setMax(valores[0].intValue());
progressBar.setSecondaryProgress(valores[1].intValue());
progressBar.setProgress(valores[2].intValue());
return true;
}
return false;
}
}
Este é a lista_viagem.xml, de onde estou pegando o layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical" >
<ImageView
android:id="@+id/tipoViagem"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:orientation="vertical" >
<TextView
android:id="@+id/destino"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/data"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/valor"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<ProgressBar
android:id="@+id/barraProgresso"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="@android:attr/progressBarStyleHorizontal" />
</LinearLayout>
</LinearLayout>