0
public class DetalhesGrupoPerguntas extends Fragment implements View.OnClickListener,   AdapterView.OnItemSelectedListener {

 private void trocarPergunta(boolean proxima) throws IOException {
    Log.e(TAG, "proxima pergunta");
    if(lst != null){

        //primeiro ele salva a resposta atual.
        //AppUtils.salvarRespostaPerguntaAtual(getActivity());

        // TODO @fix: resolver como trocar para o próximo item da lista.
        // agora ele seleciona o adapter e muda o item selecionado.
        if(adapter == null )
            adapter = (ListaPerguntasAdapter) lst.getAdapter();

        if(proxima){
            int index = adapter.getCurrentPosition();
            if(index < adapter.getCount()){
                index += 1;
                adapter.getView(index, null, null).performClick();
                Toast.makeText(context, "Você acabou de responder a última pergunta deste Grupo de Perguntas", Toast.LENGTH_SHORT).show();
            }

        }else{
            int index = adapter.getCurrentPosition();
            if(index > 0){
                index -= 1;
                adapter.getView(index, null, null).performClick();
            }else {
                Toast.makeText(context, "Você na primeira pergunta deste Grupo de Perguntas", Toast.LENGTH_SHORT).show();
            }

        }
    }

...

私のCustomAdapterの上。

public class ListaPerguntasAdapter extends BaseAdapter {

....

@Override
public View getView(int i, View view, ViewGroup viewGroup) {

 /**
     * Seta o click no item da lista e ativa o painel
     * de informações envia o id do produtor e da propriedade.
     */
    v.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            ViewHolder vh = new ViewHolder();
            vh = (ViewHolder) v.getTag();

            currentPosition = i2;
            Log.e(TAG, "Item clicado é: "+String.valueOf(i2));

            if (firstTimeStartup) {// first time  highlight first row
                currentSelectedView = v;
            }

            firstTimeStartup = false;
            if (currentSelectedView != null && currentSelectedView != v) {
                unhighlightCurrentRow(currentSelectedView);
            }

            currentSelectedView = v;
            highlightCurrentRow(currentSelectedView);


            abrirListaRespostas(context, vh, vh.pergunta_id);

        }
    });

Click を実行したときに、ListView がアダプタの onClickListener を使用していません。

4

1 に答える 1

0

onclicklistener の代わりに、アダプター内で onitemClicklistener を使用します。onitemclicklistenert は、アダプタの各アイテムのすべてのクリック イベントを処理します。

于 2013-09-18T15:29:09.340 に答える