OnFocusChangeListener在BaseAdapter中不起作用?

时间:2015-03-10 15:03:35

标签: android

我尝试在带有BaseAdapter的EditText中使用setOnFocusChangeListener。我想当EditText失去焦点确实设置一个计算器的值但我不明白为什么在失去焦点后总是在EditText中设置为零。我认为问题出在Android版本上,因为版本4.3工作正常,但版本4.4.2不起作用。

我怎么能这样做?

public class VendasProdutoListAdapter extends BaseAdapter {
    private Context context;
    private List<Produto> lista;

    public VendasProdutoListAdapter(Context context, List<Produto> lista) {
        this.context = context;
        this.lista = lista;
    }

    @Override
    public int getCount() {
        return lista.size();
    }

    @Override
    public Object getItem(int position) {
        return lista.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }



    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        final Produto produto = lista.get(position);
        final ItensVenda item = new ItensVenda();
        final ViewHolder holder;
        if (convertView == null) {
            holder = new ViewHolder();
            LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.venda_produto_listadapter, parent, false);

            holder.llVendaProdutoListAdapter = (LinearLayout) convertView.findViewById(R.id.llVendaProdutoListAdapter);
            holder.tvQtdEstoque = (TextView) convertView.findViewById(R.id.tvQtdEstoque);
            holder.tvNomeProduto = (TextView) convertView.findViewById(R.id.tvNomeProduto);
            holder.sivImagemProduto = (SmartImageView)convertView.findViewById(R.id.sivImagemProduto);
            holder.cbBrinde = (CheckBox)convertView.findViewById(R.id.cbBrinde);
            holder.cbEntregaFutura = (CheckBox)convertView.findViewById(R.id.cbEntregaFutura);
            holder.etQtd = (EditText)convertView.findViewById(R.id.etQtd);
            holder.btComprar = (Button)convertView.findViewById(R.id.btComprar);

            convertView.setTag(holder);
        }else{
            holder = (ViewHolder)convertView.getTag();
        }

        holder.tvQtdEstoque.setText(String.valueOf(produto.getQuantidade()));
        holder.tvNomeProduto.setText(produto.getNome() + " R$ " + FormataMonetarios.getMoney(produto.getPreco_venda()));

        //checkbox
        holder.cbBrinde.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(holder.cbBrinde.isChecked()){
                    item.setBrinde(1);
                }else{
                    item.setBrinde(0);
                }
            }
        });
        holder.cbEntregaFutura.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(holder.cbEntregaFutura.isChecked()){
                    item.setEntregaFutura(1);
                }else{
                    item.setEntregaFutura(0);
                }
                Log.i("ENTREGA FUTURA->", item.getEntregaFutura() + "");
            }
        });
        //

        //edittext quantidade
        holder.etQtd.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            public void onFocusChange(View v, boolean hasFocus) {
                if(!hasFocus){
                    int qtd = Integer.parseInt(holder.etQtd.getText().toString());
                    if (qtd > produto.getQuantidade()){
                        Toast.makeText(context, "Nosso estoque não possuí esta quantidade", Toast.LENGTH_SHORT).show();
                    }
                }
            }
        });

        return convertView;
    }


    private static class ViewHolder{
        LinearLayout llVendaProdutoListAdapter;
        TextView tvQtdEstoque;
        SmartImageView sivImagemProduto;
        TextView tvNomeProduto;
        CheckBox cbBrinde;
        CheckBox cbEntregaFutura;
        EditText etQtd;
        Button btComprar;
    }
}

0 个答案:

没有答案