OnScrollListener does not work OnItemClickListener

0

OnItemClickListener does not work when you click a search client.

Hello. I have a screen that is a ListActivity, when I open it, it brings the clients perfectly from the database, running the OnScrollListener and also OnItemClickListener.

However on the same screen there is an edittext for search; so when I do the search, it brings the normal client, the problem is that the OnItemClickListener does not work when clicking on a search client.

public class Lista_Clientes extends ListActivity implements OnClickListener, OnScrollListener {
...
@Override
    public void onCreate(Bundle savedInstanceState) {
    ...
    preencherclientes
    getListView().setOnScrollListener(this);
    }

//Esse método está funcionando normal ao clicar em cliente que não tiver sido pesquisado
//No entanto ao pesquisar ele não funciona mais.
 @Override
    protected void onListItemClick(ListView l,View v,int position,long id){

        super.onListItemClick(l, v, position, id);                

        Cliente cliente = (Cliente) this.getListAdapter().getItem(position);

        if (RetornaResultado) { 
            adicionaResultado(String.valueOf(cliente.getIDcli()));
        } else {
            Intent i = new Intent(this, Act_ConsultaCliente.class);
            Act_ConsultaCliente.mCodCliente = String.valueOf(cliente.getIDcli());
            startActivity(i);
        }        

    }

public void preencherclientes(int mais, boolean usaFiltro) {

        String limite = " LIMIT 20 OFFSET "+mais+"";
        //String sAux = "";
        if (!(mSpoApp.getManager().getConfiguracaoAparelhoVendedor(1) == null))
            sAux = " and _id in (select idcli from clienterotavendedor where idrot = (select rota_id from configuracaoaparelhovendedor))";

        if (!usaFiltro) { 
            listCliente.addAll(mSpoApp
                    .getManager()
                    .getClienteDao()
                    .getAllbyClause("1=1 "+sAux+" order by nome "+limite,null,null, null,null));    
        } else {
            listCliente = mSpoApp.getManager().getClienteDao().getAllbyClause("1 = 1 " + sAux + 
                            " and nome like '%" + mEdtFiltro.getText().toString() + "%' " +
                            "or (fantasia like '%" + mEdtFiltro.getText().toString()+"%') " +
                            "or (cpf like '%" + mEdtFiltro.getText().toString()+"%') " +
                            "or (cnpj like '%" + mEdtFiltro.getText().toString()+"%') " +
                            "or (_id = '" + mEdtFiltro.getText().toString() + "') order by nome " + limite,null,null, null,null);            
        }


        mClientesAdapter = new Adapter_ListaClientes(Lista_Clientes.this, listCliente);


        setListAdapter(mClientesAdapter);

    }   

    public void adicionarclientes(int mais) {
        String limite = " LIMIT 20 OFFSET "+mais+"";
        String sAux = "";
        if (!(mSpoApp.getManager().getConfiguracaoAparelhoVendedor(1) == null))
            sAux = " and _id in (select idcli from clienterotavendedor where idrot = (select rota_id from configuracaoaparelhovendedor))";

        listCliente.addAll(mSpoApp
                .getManager()
                .getClienteDao()
                .getAllbyClause("1=1 "+sAux+" order by nome "+limite,null,null, null,null));    
        mClientesAdapter.notifyDataSetChanged();

    }

@Override
    public void onScroll(AbsListView view, int primeiroItemVisivel,
            int quantidadeDeItensVisiveis, int totalDeItensNoAdapter) {
        if(primeiroItemVisivel + quantidadeDeItensVisiveis >= totalDeItensNoAdapter - 0) {

                adicionarclientes(totalDeItensNoAdapter);

        }
    }

@Override
    public void onScrollStateChanged(AbsListView view, int scrollState) {
        //

    }
    
asked by anonymous 16.04.2015 / 16:30

1 answer

0

I was able to solve my problem. The problem was, that when I did the search it tried to add it back to the list, because the list soon came to an end because the last item in the list was visible

	@Override
	public void onScroll(AbsListView view, int primeiroItemVisivel,
			int quantidadeDeItensVisiveis, int totalDeItensNoAdapter) {
		if(primeiroItemVisivel + quantidadeDeItensVisiveis >= totalDeItensNoAdapter - 0) {
			/**
			 * Aqui faço o tratamento para aumetar a lista
			 * Como preciso adicionar na lista somente enquanto tiver dados no banco
			 * fiz o if para verificar se ja chegou no final
			 * se chegar não adicione mais na lista
			 */
			
			//Se total de itens no adapter não for maior ou igual a 20, não faça nada 
			if (totalDeItensNoAdapter >=20) {
				
			
				//Se total for diferente do total de itens que tem no adapter
				//Contar recebe o valor total de itens no adapter
				//Quando total for igual o número de itens no adapter, então total recebe um amais
				if (total != totalDeItensNoAdapter) {
					total = totalDeItensNoAdapter;
				} else {
					total++;	
				}
				
				//Se a soma de primeito intem visível + quantidade de itens visível for igual 
				if ((primeiroItemVisivel + quantidadeDeItensVisiveis) == totalDeItensNoAdapter) {
					//Enquanto total não for maior que total de itens no adapter, adicione novos clientes
					if (!(total>totalDeItensNoAdapter)) {
						adicionarclientes(totalDeItensNoAdapter);
					}
				}
			}
		}
	}
    
16.04.2015 / 19:59