如何在我的自定义适配器中设置onClickLIstener,以显示在执行clickClick时用于触发clickevent的高亮显示的项目?

时间:2013-09-18 14:36:52

标签: android listview android-listview

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();
            }

        }
    }

...

在我的自定义适配器上方。

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。

1 个答案:

答案 0 :(得分:0)

在适配器内使用onitemClicklistener而不是onclicklistener。 onitemclicklistener将处理适配器每个项目上的所有点击事件。