title: ListView "coming back" when scrolling
body: <p>I'm getting a strange behavior in the ListView, and only one ListView, I have a lot of ListViews in my app, but only in this is happening.</p>
  
  <p>I will try explain, when I scroll to the bottom, all right, the scrolls go and stop in the end. When I scroll to the top, it's like the scroll splash in the top and come back to the bottom. </p>
  
  <p>I have <a href="http://youtu.be/MmL1ri4OGHo" rel="nofollow">this video</a> showing the problem.</p>
  
  <p>This is my xml of the ListView:</p>
  
  <pre><code>&lt;ListView
      android:id="@+id/lv_resultado_produtos"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:divider="@color/Black"
      android:dividerHeight="1dip"
      android:fastScrollEnabled="true"
      android:scrollX="0dip"
      android:scrollY="0dip"
      android:scrollbarSize="22dip"
      android:scrollbarStyle="outsideOverlay" /&gt;
  </code></pre>
  
  <p>And programmatically I only set the Adapter with my CustomAdapter, nothing more.</p>
  
  <p>I tested in others ListViews and I didn't get this behavior.</p>
  
  <p>I will be glad if someone help me on this.</p>
  
  <p>[EDIT]</p>
  
  <p>Here is my Adapter, it's a little complex, sorry, I tried keep everything but have some limitation in size of characters:</p>
  
  <pre><code>[PACKAGE]
  
  [IMPORTS]
  
  public class CustomAdapter_Produto_Insercao extends ArrayAdapter&lt;Produto_Insercao&gt; {
  
      static View view_aux = null;
  
      static OnClickListener listener_convertView = null;
      static OnClickListener listener_btn_editar_produto = null;
  
      static Activity ctx;
  
      static Dialog_TW ad_estoque;
  
      static List&lt;Condicao_Preco&gt; list_tabela_preco_condicao;
  
      public static boolean clickable = true;
  
      public static boolean highlight = false;
  
      public static int linha_atual = 0;
  
      public static View view_atual = null;   
  
      static boolean id_margem = false;
      static boolean id_destaca_ipi = false;
      static String ls_id_tipo_regime;
      static Integer li_cd_cliente;
  
      static String caminho_foto;
  
      static DecimalFormat decimalFormat = null;
  
      static Repositorio repositorio;
  
      static Condicao_Preco c_p_null;
  
      static boolean inNotify = false;
  
      private final LayoutInflater inflater;
  
      private final int resourceId;
  
      public void setClickable(Boolean b){
          clickable = b;
      }
  
      public CustomAdapter_Produto_Insercao setId_margem(boolean id_margem){
          this.id_margem = id_margem;
          return this;
      }
  
      public CustomAdapter_Produto_Insercao setHighlight(boolean highlight){
          this.highlight = highlight;
          return this;
      }
  
      public CustomAdapter_Produto_Insercao setListener_convertView(OnClickListener listener){
          this.listener_convertView = listener;
          return this;
      }
  
      public CustomAdapter_Produto_Insercao setListener_btn_editar_produto(OnClickListener listener){
          this.listener_btn_editar_produto = listener;
          return this;
      }
  
      public CustomAdapter_Produto_Insercao(Activity context, int resource, List&lt;Produto_Insercao&gt; objects, List&lt;Condicao_Preco&gt; list_tabela_preco_condicao, String ls_id_tipo_regime, Integer li_cd_cliente) {
  
          super(context, resource, objects);
  
          ctx = context;
  
          this.list_tabela_preco_condicao = list_tabela_preco_condicao;
  
          this.inflater = LayoutInflater.from(context);
          this.resourceId = resource;
          this.ls_id_tipo_regime = ls_id_tipo_regime;
          this.li_cd_cliente = li_cd_cliente;
  
          DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols();
          decimalFormatSymbols.setDecimalSeparator(',');
          decimalFormatSymbols.setGroupingSeparator('.');     
          decimalFormat = new DecimalFormat("#,##0.00", decimalFormatSymbols);
  
          repositorio = new Repositorio(ctx);
          String s_id_margem = repositorio.Parametro_getValue("id_margem");
          if(s_id_margem != null &amp;&amp; s_id_margem.equals("S")){
              id_margem = true;
          }
  
          String s_id_destaca_ipi = repositorio.Parametro_getValue("id_destaca_ipi");
          if(s_id_destaca_ipi != null &amp;&amp; s_id_destaca_ipi.equals("S")){
              id_destaca_ipi = true;
          }
  
          for(Produto_Insercao p_i : objects){
              if(p_i.getQt_pedida() == null || p_i.getQt_pedida() == 0d){
                  p_i.setId_selecionado(false);
                  p_i.setId_tabela_condicao_preco(-1);
                  p_i.setCd_tabela_preco_condicao(-1);
              } else {
                  p_i.setId_selecionado(true);
              }
          }
  
          caminho_foto = repositorio.Parametro_getValue("caminho_foto");
  
          c_p_null = new Condicao_Preco();
          c_p_null.setCd_condicao_preco(0);
          c_p_null.setCd_tabela_preco_condicao(0);
          c_p_null.setDs_condicao_preco("Selecione");
          c_p_null.setId_promocao("N");
          c_p_null.setId_fake(true);
      }
  
      private static class ViewHolder {
          public int     position;
  
          public TextView            cd_produto;
          public TextView            ds_produto;
          public TextView            ds_unidade;
          public Button              btn_vl_saldo;
          public Spinner             spn_tabela_condicao_preco;
          public TextView            vl_unidade_unitario;
          public TextView            vl_unitario;
          public Button              qt_produto_menos;
          public Button              qt_produto_mais;
          public EditText_Decimal_TW qt_produto;
          public TextView            vl_total;
          public Button              btn_editar_produto;
          public TextView            vl_custo;
          public TextView            pr_ipi;
          public ImageButton         foto_produto;
  
          public Button              mais_opcoes;
      }
  
      @Override
      public void notifyDataSetChanged() {
          inNotify = true;
  
          boolean b = false;
          if(view_aux != null &amp;&amp; view_aux.isPressed()){
              b = true;
          } 
  
          super.notifyDataSetChanged();
  
          if(b){
              view_aux.requestFocus();
              view_aux.setPressed(true);
              view_aux.setSelected(true);
          }
  
          inNotify = false;
      }
  
      public View getView(final int position, View convertView, ViewGroup parent) {
          final ViewHolder viewHolder;
  
          final Produto_Insercao p = getItem(position);
  
          if(p.getCd_tabela_preco_condicao() == -1){
              p.setId_selecionado(false);
          } else {
              p.setId_selecionado(true);
          }
  
          if (convertView == null) {
              convertView = inflater.inflate(resourceId, parent, false);
  
              viewHolder = new ViewHolder();
  
              viewHolder.cd_produto                = (TextView)            convertView.findViewById(R.id.cd_produto);
              viewHolder.ds_produto                = (TextView)            convertView.findViewById(R.id.ds_produto);
              viewHolder.ds_unidade                = (TextView)            convertView.findViewById(R.id.ds_unidade);
              viewHolder.btn_vl_saldo              = (Button)              convertView.findViewById(R.id.btn_vl_saldo);
              viewHolder.spn_tabela_condicao_preco = (Spinner)             convertView.findViewById(R.id.spn_tabela_condicao_preco);
              viewHolder.vl_unidade_unitario       = (TextView)            convertView.findViewById(R.id.vl_unidade_unitario);
              viewHolder.vl_unitario               = (TextView)            convertView.findViewById(R.id.vl_unitario);
              viewHolder.qt_produto_menos          = (Button)              convertView.findViewById(R.id.qt_produto_menos);
              viewHolder.qt_produto_mais           = (Button)              convertView.findViewById(R.id.qt_produto_mais);
              viewHolder.qt_produto                = (EditText_Decimal_TW) convertView.findViewById(R.id.qt_produto);
              viewHolder.vl_total                  = (TextView)            convertView.findViewById(R.id.vl_total);
              viewHolder.btn_editar_produto        = (Button)              convertView.findViewById(R.id.btn_editar_produto);
              viewHolder.vl_custo                  = (TextView)            convertView.findViewById(R.id.vl_custo);
              viewHolder.pr_ipi                    = (TextView)            convertView.findViewById(R.id.pr_ipi);
              viewHolder.foto_produto              = (ImageButton)         convertView.findViewById(R.id.foto_produto);
  
              viewHolder.mais_opcoes               = (Button)              convertView.findViewById(R.id.mais_opcoes);
  
              boolean id_mobile_utiliza_valor_unitario = false;
              String s_id_mobile_utiliza_valor_unitario = repositorio.Parametro_getValue("id_mobile_utiliza_valor_unitario");
              if(s_id_mobile_utiliza_valor_unitario != null &amp;&amp; s_id_mobile_utiliza_valor_unitario.equals("S")){
                  id_mobile_utiliza_valor_unitario = true;
              }
              if(!id_mobile_utiliza_valor_unitario){
                  viewHolder.vl_unidade_unitario.setLayoutParams(new LinearLayout.LayoutParams(0, 0));
                  LinearLayout.LayoutParams ll = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 13);
                  viewHolder.mais_opcoes.setLayoutParams(ll);
              } else {
                  LinearLayout.LayoutParams ll = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 15);
                  viewHolder.mais_opcoes.setLayoutParams(ll);
              }
  
              convertView.setTag(viewHolder);
          } else {
              viewHolder = (ViewHolder) convertView.getTag();
          }
  
          Repeater qt_produto_menos_repeater = new Repeater(viewHolder.qt_produto_menos);
  
          viewHolder.qt_produto_menos.setOnLongClickListener(qt_produto_menos_repeater);
  
          Repeater qt_produto_mais_repeater = new Repeater(viewHolder.qt_produto_mais);
  
          viewHolder.qt_produto_mais.setOnLongClickListener(qt_produto_mais_repeater);
  
          if(p.isId_liberado()){
              viewHolder.mais_opcoes              .setVisibility(View.GONE);
  
              viewHolder.qt_produto_menos         .setVisibility(View.VISIBLE);
              viewHolder.qt_produto_mais          .setVisibility(View.VISIBLE);
              viewHolder.qt_produto               .setVisibility(View.VISIBLE);
              viewHolder.spn_tabela_condicao_preco.setVisibility(View.VISIBLE);
              viewHolder.vl_unidade_unitario      .setVisibility(View.VISIBLE);
              viewHolder.vl_unitario              .setVisibility(View.VISIBLE);
              viewHolder.vl_total                 .setVisibility(View.VISIBLE);
              viewHolder.btn_editar_produto       .setVisibility(View.VISIBLE);
          } else {
              viewHolder.mais_opcoes              .setVisibility(View.VISIBLE);
  
              viewHolder.qt_produto_menos         .setVisibility(View.GONE);
              viewHolder.qt_produto_mais          .setVisibility(View.GONE);
              viewHolder.qt_produto               .setVisibility(View.GONE);
              viewHolder.spn_tabela_condicao_preco.setVisibility(View.GONE);
              viewHolder.vl_unidade_unitario      .setVisibility(View.GONE);
              viewHolder.vl_unitario              .setVisibility(View.GONE);
              viewHolder.vl_total                 .setVisibility(View.GONE);
              viewHolder.btn_editar_produto       .setVisibility(View.GONE);
  
              p.setId_liberado(false);
          }
  
          viewHolder.mais_opcoes.setOnClickListener(new OnClickListener() {           
              @Override
              public void onClick(View v) {
                  p.setId_liberado(true);
  
                  notifyDataSetChanged();
              }
          });
  
          viewHolder.position = position;
  
          if(!inNotify)
              new MyAsyncTask(position, viewHolder, convertView, p, this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, null);
  
          if(p.getQt_pedida() != null &amp;&amp; p.getQt_pedida() &gt; 0d){
              convertView.setBackgroundResource(R.color.DuaPi_Pressed);
          } else {
              convertView.setBackgroundResource(R.color.WhiteSmoke);
          }
  
          if(p.getVl_saldo() != null &amp;&amp; p.getVl_saldo() &gt; 0d){
              viewHolder.cd_produto                .setTextColor(Color.BLACK);
              viewHolder.ds_produto                .setTextColor(Color.BLACK);
              viewHolder.ds_unidade                .setTextColor(Color.BLACK);
              viewHolder.btn_vl_saldo              .setTextColor(Color.BLACK);
          } else {
              viewHolder.cd_produto                .setTextColor(Color.RED);
              viewHolder.ds_produto                .setTextColor(Color.RED);
              viewHolder.ds_unidade                .setTextColor(Color.RED);
              viewHolder.btn_vl_saldo              .setTextColor(Color.RED);
          }
  
          if(highlight &amp;&amp; position == linha_atual){
              convertView.setBackgroundResource(R.color.DuaPi);
          } else {
              convertView.setBackgroundResource(R.drawable.listview_background);
          }
  
          return convertView;
      }
  
      private static class MyAsyncTask extends AsyncTask {
  
          private int              position;
          private ViewHolder       viewHolder;
          private View             convertView;
          private Produto_Insercao p;
  
          private List&lt;Condicao_Preco&gt;           lista_tabela_preco_condicao;
          private CustomAdapter_Produto_Insercao mAdapter;
          private SpinnerAdapter_Condicao_Preco  adapter;
  
          public MyAsyncTask(int position, ViewHolder viewHolder, View convertView, Produto_Insercao p, CustomAdapter_Produto_Insercao mAdapter) {
              this.position    = position;
              this.viewHolder  = viewHolder;
              this.convertView = convertView;
              this.p           = p;
              this.mAdapter    = mAdapter;
  
              lista_tabela_preco_condicao = new ArrayList&lt;Condicao_Preco&gt;();
          }
  
          @Override
          protected Object doInBackground(Object... params) {
              if(p.isId_liberado()){
                  viewHolder.btn_editar_produto.setOnClickListener(new OnClickListener() {            
                      @Override
                      public void onClick(View v) {               
                          linha_atual = position;
                          view_atual  = convertView;
  
                          if(listener_btn_editar_produto != null){
                              listener_btn_editar_produto.onClick(v);
                          }
                      }
                  });
  
                  viewHolder.qt_produto_menos.setOnClickListener(new OnClickListener() {          
                      @Override
                      public void onClick(View v) {
                          view_aux = viewHolder.qt_produto_menos;
  
                          Double qt_anterior = viewHolder.qt_produto.getValor_Double();
  
                          viewHolder.qt_produto.setValor(viewHolder.qt_produto.getValor_Double() - p.getFator_venda());
  
                          //verifica se o produto não está na lista de itens do pedido, se tiver não deixa zerar...
                          if(PedidoTabActivity2.find_produto_em_itens(p.getCd_produto())){
                              if(viewHolder.qt_produto.getValor_Double() &lt;= 0d){
                                  viewHolder.qt_produto.setValor(qt_anterior);
                                  return;
                              }
                          }
  
                          if(viewHolder.qt_produto.getValor_Double() &lt; 0d){
                              viewHolder.qt_produto.setValor(0d);
                          }
  
                          p.setQt_pedida(viewHolder.qt_produto.getValor_Double());
  
                          calculaInformacoes(false);
  
                          if(!atualizaFLEX(p, 30)){
                              viewHolder.qt_produto.setValor(qt_anterior);
                              p.setQt_pedida(qt_anterior);
                              atualizaFLEX(p, 10);
                              calculaInformacoes(false);
                              return;
                          }
                      }
                  });
  
                  viewHolder.qt_produto_mais.setOnClickListener(new OnClickListener() {           
                      @Override
                      public void onClick(View v) {
                          view_aux = viewHolder.qt_produto_menos;
  
                          Double qt_anterior = viewHolder.qt_produto.getValor_Double();
  
                          viewHolder.qt_produto.setValor(viewHolder.qt_produto.getValor_Double() + p.getFator_venda());
  
                          p.setQt_pedida(viewHolder.qt_produto.getValor_Double());
  
                          calculaInformacoes(false);
  
                          if(!atualizaFLEX(p, 30)){
                              viewHolder.qt_produto.setValor(qt_anterior);
                              p.setQt_pedida(qt_anterior);
                              atualizaFLEX(p, 10);
                              calculaInformacoes(false);
                              return;
                          }
                      }
                  });
  
                  lista_tabela_preco_condicao.add(c_p_null);
  
                  lista_tabela_preco_condicao.addAll(list_tabela_preco_condicao);
  
                  if(p.getId_promocao() &lt; 1){
                      for(int i = 0; i &lt; lista_tabela_preco_condicao.size(); i++){
                          if(lista_tabela_preco_condicao.get(i).getId_promocao().equals("S")){
                              lista_tabela_preco_condicao.remove(i--);
                          }
                      }
                  }
  
                  OnItemSelectedListener onItemSelectedListener = new OnItemSelectedListener() {
                      @Override
                      public void onItemSelected(AdapterView&lt;?&gt; arg0, View arg1, int arg2, long arg3) {                   
                          selection(arg2);
                      }
  
                      @Override
                      public void onNothingSelected(AdapterView&lt;?&gt; arg0) {    
                      }
                  };
  
                  viewHolder.spn_tabela_condicao_preco.setOnItemSelectedListener(onItemSelectedListener);
  
                  adapter = new SpinnerAdapter_Condicao_Preco(ctx, android.R.layout.simple_spinner_item, lista_tabela_preco_condicao, ls_id_tipo_regime, p.getCd_tabela_preco(), p.getCd_produto(), li_cd_cliente);
                  adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
              }
  
              convertView.setOnClickListener(new OnClickListener() {
                  public void onClick(View v) {
                      if(!clickable){
                          return ;
                      }
  
                      linha_atual = position;
                      view_atual  = convertView;
  
                      if(listener_convertView != null){
                          listener_convertView.onClick(v);
                      }
  
                      p.setId_liberado(true);
  
                      mAdapter.notifyDataSetChanged();
                  }
              });
  
              viewHolder.btn_vl_saldo.setOnClickListener(new OnClickListener() {          
                  @Override
                  public void onClick(View v) {
                      if(ad_estoque != null){
                          return ;
                      }
  
                      ad_estoque = new Dialog_TW(ctx);
  
                      final Dialog_TW ad_estoque_temp = ad_estoque;
                      ad_estoque.setView(R.layout.layout_pedido_venda_tab_insercao_estoque);
                      ad_estoque.setTitle("Consulta de Estoque");
                      ad_estoque.setCancelable(false);
  
                      View view_estoque = ad_estoque.getView();
  
                      TextView ds_produto   = (TextView) view_estoque.findViewById(R.id.ds_produto);
                      Button   btn_ok       = (Button)   view_estoque.findViewById(R.id.btn_ok);
                      ListView lv_resultado = (ListView) view_estoque.findViewById(R.id.lv_resultado);
                      TextView vl_total     = (TextView) view_estoque.findViewById(R.id.vl_total);
  
                      ds_produto.setText(p.toString());
  
                      btn_ok.setOnClickListener(new OnClickListener() {                   
                          @Override
                          public void onClick(View v) {
                              ad_estoque_temp.getDialog(false, 50d).dismiss();
                          }
                      });
  
                      ad_estoque.setOnDismissListener(new OnDismissListener() {                               
                          @Override
                          public void onDismiss(DialogInterface dialog) {
                              ad_estoque = null;
  
                              if(CustomAdapter_Pedido_Venda_Pendente_Item_Rascunho.editar){
                                  CustomAdapter_Pedido_Venda_Pendente_Item_Rascunho.editar = false;
                              }
                          }
                      }); 
                      Repositorio repositorio = new Repositorio(ctx);                             
                      List&lt;Saldo_Estoque&gt; lista_saldo_estoque = repositorio.generic_GetList(Saldo_Estoque.class, 
                                                                                "cd_produto = '" + p.getCd_produto() + "'",  
                                                                                null, 
                                                                                null, 
                                                                                null, 
                                                                                "cd_empresa asc", 
                                                                                false);
                      Double total = 0d;
                      for(Saldo_Estoque s_e : lista_saldo_estoque){
                          List&lt;Empresa&gt; lista_empresa = repositorio.generic_GetList(Empresa.class, 
                                                                                    "cd_empresa = '" + s_e.getCd_empresa() + "'",  
                                                                                    null, 
                                                                                    null, 
                                                                                    null, 
                                                                                    null, 
                                                                                    false);
                          Empresa e = null;
                          if(lista_empresa != null &amp;&amp; lista_empresa.size() &gt; 0){
                              e = lista_empresa.get(0);
                              s_e.setNm_reduzido(e.getNm_reduzido());
                          }
                          total += s_e.getQt_disponivel();
                      }
                      vl_total.setText(decimalFormat.format(total));
  
                      CustomAdapter_Estoque adapter_estoque = new CustomAdapter_Estoque(ctx, R.layout.layout_pedido_venda_tab_insercao_estoque_lista, lista_saldo_estoque).setHighlight(true);
                      lv_resultado.setAdapter(adapter_estoque);
  
                      ad_estoque.getDialog(false, 50d).show();                
                  }
              });
              return null;
          }                   
          @Override
          protected void onPostExecute(Object result) {
  
              if(id_margem){
                  viewHolder.vl_custo.setVisibility(View.VISIBLE);
                  viewHolder.vl_custo.setText(p.getVl_custo_unitario() == null ? "-" : decimalFormat.format(p.getVl_custo_unitario()));
              }
  
              if(id_destaca_ipi){
                  viewHolder.pr_ipi.setVisibility(View.VISIBLE);
                  viewHolder.pr_ipi.setText(decimalFormat.format(p.getPr_ipi()));
              }
  
              if(caminho_foto != null &amp;&amp; p.getId_foto() != null &amp;&amp; p.getId_foto().equals("S")){
                  viewHolder.foto_produto.setVisibility(View.VISIBLE);                
                  viewHolder.foto_produto.setOnClickListener(new OnClickListener() {          
                      @Override
                      public void onClick(View v) {
                          Util.carregar_foto_produto(p.getCd_produto(), p.getDs_produto(), p.getNm_foto(), ctx);
                      }
                  });
              }
  
              viewHolder.cd_produto  .setText(p.getCd_produto());
              viewHolder.ds_produto  .setText(p.getDs_produto());
              viewHolder.ds_unidade  .setText(p.getDs_unidade_unitaria());
              viewHolder.btn_vl_saldo.setText(decimalFormat.format(p.getVl_saldo()));
  
              if(p.isId_liberado()){
                  if(p.isId_selecionado()){                   
                      Unidade u = null;                   
                      List&lt;Unidade&gt; lista_Unidade = repositorio.generic_GetList(Unidade.class, 
                                "cd_unidade = " + p.getCd_unidade_embalagem(),  
                                null, 
                                null, 
                                null, 
                                null, 
                                false);
                      if(lista_Unidade != null &amp;&amp; lista_Unidade.size() &gt; 0){
                          u = lista_Unidade.get(0);
                      }       
                      Double vl_unidade_unitario = Util.roundDouble(p.getVl_unitario() / (u != null ? u.getFator_conversao() : 1), 2);
                      viewHolder.vl_unidade_unitario.setText(decimalFormat.format(vl_unidade_unitario));
                      viewHolder.vl_unitario.setText(decimalFormat.format(p.getVl_unitario()));
                      viewHolder.vl_total   .setText(decimalFormat.format(p.getVl_total()));
                  } else {
                      viewHolder.vl_unidade_unitario.setText(" - ");
                      viewHolder.vl_unitario        .setText(" - ");
                      viewHolder.vl_total           .setText(" - ");
                  }
  
                  viewHolder.qt_produto.setValor(p.getQt_pedida() == null ? 0d : p.getQt_pedida());
  
                  viewHolder.spn_tabela_condicao_preco.setAdapter(adapter);
  
                  if(lista_tabela_preco_condicao.size() &gt; 1){
                      viewHolder.spn_tabela_condicao_preco.setEnabled(true);
                  } else {
                      viewHolder.spn_tabela_condicao_preco.setEnabled(false);
                  }
  
                  if(p.isId_selecionado()){       
                      viewHolder.spn_tabela_condicao_preco.setSelection(find_Condicao_Preco_position(lista_tabela_preco_condicao, p.getCd_tabela_preco_condicao()));
                  } else {
                      viewHolder.spn_tabela_condicao_preco.setSelection(0);
                  }
  
                  if(lista_tabela_preco_condicao == null || lista_tabela_preco_condicao.size() &lt; 2){
                      viewHolder.btn_editar_produto.setEnabled(false);
                  } else {
                      viewHolder.btn_editar_produto.setEnabled(true);
                  }
  
                  if(!p.isId_selecionado() &amp;&amp; lista_tabela_preco_condicao.size() == 3){
                      adapter.getDropDownView(2, null, null);
                      viewHolder.spn_tabela_condicao_preco.setSelection(2);
                  }
              }
  
              convertView.setClickable(true);
              convertView.setFocusable(true);
          }
          private Double calculaInformacoes_getVl_unitario(){     
              [ONLY CALCULATES THE VALUES]
          }                   
          private void calculaInformacoes(boolean calcula_Preco){ 
              [ONLY CALCULATES THE VALUES]
          }
          private boolean atualizaFLEX(Produto_Insercao p_i, int operacao) {
              [ONLY CALCULATES THE VALUES]
          }
  
          public Condicao_Preco find_Condicao_Preco(List&lt;Condicao_Preco&gt; lista, Integer cd_tabela_preco_condicao){
              for(Condicao_Preco c_p : lista){
                  if(c_p.getCd_tabela_preco_condicao().equals(cd_tabela_preco_condicao)){
                      return c_p;
                  }
              }       
              return null;
          }
  
          public Integer find_Condicao_Preco_position(List&lt;Condicao_Preco&gt; lista, Integer cd_tabela_preco_condicao){
              for(int i = 0; i &lt; lista.size(); i++){
                  Condicao_Preco c_p = lista.get(i);
                  if(c_p.getCd_tabela_preco_condicao().equals(cd_tabela_preco_condicao)){
                      return i;
                  }
              }       
              return null;
          }
  
          public void selection(Integer arg2){
              if(arg2 &gt; 0){
                  Condicao_Preco c_p = find_Condicao_Preco(lista_tabela_preco_condicao, p.getCd_tabela_preco_condicao());
                  Condicao_Preco c_p_aux = lista_tabela_preco_condicao.get(arg2);                                     
                  if(c_p == null || !c_p.getCd_tabela_preco_condicao().equals(c_p_aux.getCd_tabela_preco_condicao())){
                      if(p.getId_gera_flex().equals("S") &amp;&amp; c_p_aux.getDs_condicao_preco().equals("Última Venda")){
                          if(c_p_aux.getDs_condicao_preco().equals("Última Venda")){
                              Util.MessageDialog_Ok(ctx, 
                                      ctx.getResources().getString(R.string.titulo_dialog_padrao), 
                                      "Produto que gera FLEX não pode ser selecionado 'Última Venda'.", Util.ICONE_INFORMATION);  
                          }           
                          p.setCd_tabela_preco_condicao(p.getCd_tabela_preco_condicao());                                 
                          mAdapter.notifyDataSetChanged();
                          return;
                      }                                       
                      if(c_p_aux.getVl_valor() != null){
                          p.setCd_tabela_preco_condicao(c_p_aux.getCd_tabela_preco_condicao());
                          p.setId_selecionado(true);
                          calculaInformacoes(true);
                      } else {
                          Util.MessageDialog_Ok(ctx, 
                                  ctx.getResources().getString(R.string.titulo_dialog_padrao), 
                                  "Não foi possível encontrar a última venda deste item para este cliente.", Util.ICONE_INFORMATION);
                          p.setCd_tabela_preco_condicao(p.getCd_tabela_preco_condicao());                                 
                          mAdapter.notifyDataSetChanged();
                      }
                  }
              } else {
                  p.setCd_tabela_preco_condicao(-1);
                  p.setId_selecionado(false);
                  calculaInformacoes(true);
              }
          }
      }
  }
  </code></pre>
  
  <p>Kind Regards,</p>
  
  <p>William Bertan</p>