Pessoal, bom dia!
Depois de muito pesquisar (inclusive aqui no grupo) e quase quebrar a cabeça, me rendi e estou aqui pedindo ajuda da comunidade.
É o seguinte, eu tenho uma Activity que exibirá dados em uma ListView e eu preciso manipular outros dados da Activity que dependem de qual item da ListView eu clique (que possui 4 componentes: 1 CheckBox e 3 TextView). Até aqui vocês vão pensar: "pôh, é só criar uma lista de dados, alimentar o adapter que exibe os componentes das linhas do ListView e depois acessar os itens da lista pelo método setOnItemClickListener()". O problema é que o listener não está funcionando no meu código (que segue abaixo). Também tentei colocar o listener no getView() do meu adaptador (no CheckBox), mas me deparo com outro problema: não importa em qual item da lista eu click, qualquer evento fica associado ao ultimo item da lista.
Help, please!
XML (dos Itens que serão exibidos no ListView):
<?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="wrap_content"
android:paddingLeft="0dp"
android:paddingTop="5dp"
android:paddingRight="5dp"
android:paddingBottom="5dp"
android:orientation="vertical"
android:background="@color/fundo_transparente_cinza" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/id"
style="@style/label"
android:visibility="gone" />
<CheckBox
android:id="@+id/produto"
style="@style/label_pequeno"
android:layout_height="30dp"
android:layout_weight="1"
android:text="@string/teste_produto" />
<TextView
android:id="@+id/valor"
style="@style/label_pequeno"
android:layout_height="30dp"
android:layout_weight="2"
android:gravity="right"
android:text="@string/teste_valor" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/qtd"
style="@style/label_pequeno_pedido"
android:layout_weight="3"
android:gravity="right"
android:text="@string/teste_qtd" />
<TextView
style="@style/label_pequeno_pedido"
android:layout_weight="3"
android:gravity="center"
android:text="@string/label_x" />
<TextView
android:id="@+id/valor_unitario"
style="@style/label_pequeno_pedido"
android:layout_weight="1"
android:gravity="left"
android:text="@string/teste_valor_unitario" />
</LinearLayout>
</LinearLayout>
Activity (que exibe a ListView):
..
public void onCreate(Bundle savedStateInstance){
...
lvItensPedido = (ListView)findViewById(R.id.produtos);
cbProduto = (CheckBox)findViewById(R.id.produto);
tvQtdTotalProduto = (TextView)findViewById(R.id.qtd);
tvValorTotalProduto = (TextView)findViewById(R.id.valor);
tvValorUnitarioProduto = (TextView)findViewById(R.id.valor_unitario);
]//onCreate()
public void onResume(){
...
List<PedidoItem> itensPedido = listaItensPedido(pedido.id);
ArrayAdapter<PedidoItem> itensAdapter = new PedidoItemAdapter(this, R.layout.pedido_item, itensPedido);
lvItensPedido.setAdapter(itensAdapter);
lvItensPedido.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
String item = ((CheckBox)view).getText().toString();
Log.i(TAG, "item da lista clicado: " + item);
}
});
}
PedidoItemAdapter (meu adapter para povoar o ListView):
public class PedidoItemAdapter extends ArrayAdapter<PedidoItem> {
public static final String TAG = "ArtFoto";
public final LayoutInflater inflater;
public final Context context;
public final int resourceId;
public static CheckBox cbProduto;
public TextView tvId, tvValorUnitario, tvQtd, tvValorTotal;
public static PedidoItem item;
public PedidoItemAdapter(Context context, int resource, List<PedidoItem> produtos){
super(context, resource, produtos);
this.inflater = LayoutInflater.from(context);
this.resourceId = resource;
this.context = context;
}
@Override
public View getView(int position, View view, ViewGroup parent){
item = getItem(position);
view = inflater.inflate(resourceId, parent, false);
tvId = (TextView)view.findViewById(R.id.id);
cbProduto = (CheckBox)view.findViewById(R.id.produto);
tvValorUnitario = (TextView)view.findViewById(R.id.valor_unitario);
tvQtd = (TextView)view.findViewById(R.id.qtd);
tvValorTotal = (TextView)view.findViewById(R.id.valor);
tvId.setText(String.valueOf(item.id));
cbProduto.setText(item.nomeProduto);
cbProduto.setChecked(true);
tvValorUnitario.setText(String.format("%.2f", item.valorUnitario));
tvQtd.setText(String.valueOf(item.qtd));
tvValorTotal.setText(String.format("%.2f",item.valorTotal));
return view;
}
}
Atenciosamente,

Geronildo Jr.
Oi (81) 8841-8472 || TIM (81) 9521-8332
Facebooks: Geronildo Junior || GeronDesign
Sites: geronildojr.com || gerondesign.com






0 comentários:
Postar um comentário