Fala Geronildo.
Ja passei por este problema...
Quando inserimos componentes "Clicáveis" na view do adapter que popula o Listview, estes componentes tem "prioridade" no focus da linha.
Faça esta configuração
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:focusable="false"
android:focusableInTouchMode="false" />
E claro... implementa o listener do checkbox separado.
[]
rbarbioni
Em 26 de janeiro de 2013 16:24, Geronildo Jr. <geronildojr@gmail.com> escreveu:
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" ><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content" ><TextViewandroid:id="@+id/id"style="@style/label"android:visibility="gone" /><CheckBoxandroid:id="@+id/produto"style="@style/label_pequeno"android:layout_height="30dp"android:layout_weight="1"android:text="@string/teste_produto" /><TextViewandroid:id="@+id/valor"style="@style/label_pequeno"android:layout_height="30dp"android:layout_weight="2"android:gravity="right"android:text="@string/teste_valor" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content" ><TextViewandroid:id="@+id/qtd"style="@style/label_pequeno_pedido"android:layout_weight="3"android:gravity="right"android:text="@string/teste_qtd" /><TextViewstyle="@style/label_pequeno_pedido"android:layout_weight="3"android:gravity="center"android:text="@string/label_x" /><TextViewandroid: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() {@Overridepublic 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;}@Overridepublic 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-8332Facebooks: Geronildo Junior || GeronDesignSites: geronildojr.com || gerondesign.com






0 comentários:
Postar um comentário