我尝试在带有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;
}
}