如何使用自定义适配器从ListView返回自定义对象

时间:2017-03-02 01:35:12

标签: android listview

特别是年长的程序员。我需要一些帮助,因为我在商业应用程序中使用ListView和自定义适配器,需要订单菜单,在此菜单中有一些编辑文本字段。 我正在寻找一些方法来返回一个自定义对象,其中包含用户放置在字段中的值,我尝试使用listView.getItemAtPosition(X),但这会返回Object类的通用对象,我不知道如何转换它对象进入我的自定义类。 上面是我的自定义适配器:

    package com.mobile.pedido.pedidomobile.model.adapter;

    import android.content.Context;
    import android.graphics.Color;
    import android.text.Editable;
    import android.text.TextWatcher;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
    import android.widget.Toast;
    import com.mobile.pedido.pedidomobile.*;
    import com.mobile.pedido.pedidomobile.dao.local.ItemPedidoTempDAO;
    import com.mobile.pedido.pedidomobile.model.ItemPedidoModelo;
    import java.util.List;

    /**
     * Created by MATEUS on 11/02/2017.
     */
    public class ProdutoListamgePrecoAdapter extends BaseAdapter {

    private Context context;
    private List<ItemPedidoModelo> lista;
    int cod_pedido;
    TextView tv_sequencia, tv_nome_item;
    EditText et_quantidade, et_valor;
    Button btn_excluir;


    public ProdutoListamgePrecoAdapter(Context context, List<ItemPedidoModelo> lista, int cod_pedido) {
        this.context = context;
        this.lista = lista;
        this.cod_pedido = cod_pedido;
    }

    @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 ItemPedidoModelo itemPedidoModelo = lista.get(position);

        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View layout = inflater.inflate(R.layout.pedidoitempedido_itemprecoadapter, null);

         tv_sequencia = (TextView) layout.findViewById(R.id.pedidoitempedido_itemprecoadapter_sequencia);
         tv_nome_item = (TextView) layout.findViewById(R.id.pedidoitempedido_listagemadapter_nome);
         et_quantidade = (EditText) layout.findViewById(R.id.pedidoitempedido_itemprecoadapter_quantidade);
         et_valor = (EditText) layout.findViewById(R.id.pedidoitempedido_itemprecoadapter_preco);
         btn_excluir = (Button) layout.findViewById(R.id.pedidoitempedido_itemprecoadapter_excluir);

        tv_sequencia.setText(Integer.toString(itemPedidoModelo.getSequencia()));
        tv_nome_item.setText(itemPedidoModelo.getNome_item());

        et_quantidade.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(Editable s) {
                try {
                    lista.get(position).setQuantidade(et_quantidade.getText().toString());
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });

        et_valor.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {



            }

            @Override
            public void afterTextChanged(Editable s) {
                try {
                    lista.get(position).setPreco(s.toString());
                    Toast.makeText(context, s, Toast.LENGTH_SHORT).show();
                } catch (NumberFormatException e) {
                    Toast.makeText(context, s, Toast.LENGTH_SHORT).show();
                    e.printStackTrace();
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        });

        btn_excluir.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    if (itemPedidoModelo.isAtivo()) {
                        ItemPedidoTempDAO iptdao = new ItemPedidoTempDAO();
                        iptdao.excluirItemPedidoTemp(context, cod_pedido, itemPedidoModelo.getSequencia());
                        btn_excluir.setText("EXCLUIDO");
                        btn_excluir.setEnabled(false);
                        btn_excluir.setTextColor(Color.RED);
                        tv_sequencia.setTextColor(Color.RED);
                        tv_nome_item.setTextColor(Color.RED);
                        et_quantidade.setEnabled(false);
                        et_valor.setEnabled(false);
                        itemPedidoModelo.setAtivo(false);

                    } else {
                    }

                } catch (Exception e) {
                    e.printStackTrace();
                }


            }
        });

        return layout;
    }
}

这是我的自定义对象:

package com.mobile.pedido.pedidomobile.model;

import java.math.BigDecimal;

public class ItemPedidoModelo {

    private String cod_prod;
    private String cod_pedido;
    private String nome_item;
    private BigDecimal quantidade;
    private BigDecimal preco;
    private BigDecimal total_item;
    private int sequencia;
    private boolean ativo = true;

    public BigDecimal getTotal_item() {
        return total_item;
    }

    public void setTotal_item(BigDecimal total_item) {
        this.total_item = total_item;
    }

    public int getSequencia() {
        return sequencia;
    }

    public void setSequencia(int sequencia) {
        this.sequencia = sequencia;
    }

    public void setQuantidade(BigDecimal quantidade) {
        this.quantidade = quantidade;
    }

    public void setPreco(BigDecimal preco) {
        this.preco = preco;
    }

    public ItemPedidoModelo(){};

    public ItemPedidoModelo(String cod_prod, String cod_pedido, String nome_item, BigDecimal quantidade, BigDecimal preco, int sequencia) {
        super();
        this.cod_prod = cod_prod;
        this.cod_pedido = cod_pedido;
        this.nome_item = nome_item;
        this.quantidade = quantidade;
        this.preco = preco;
        this.sequencia = sequencia;

    }


    public String getNome_item() {
        return nome_item;
    }


    public void setNome_item(String nome_item) {
        this.nome_item = nome_item;
    }

    public String getCod_pedido() {
        return cod_pedido;
    }

    public void setCod_pedido(String cod_pedido) {
        this.cod_pedido = cod_pedido;
    }

    public String getCod_prod() {
        return cod_prod;
    }

    public void setCod_prod(String cod_prod) {
        this.cod_prod = cod_prod;
    }


    public BigDecimal getQuantidade() {
        return quantidade;
    }

    public void setQuantidade(String quantidade) {
          this.quantidade = new BigDecimal(quantidade);
    }

    public BigDecimal getPreco() {
        return preco;
    }

    public void setPreco(String valor) {
        this.preco= new BigDecimal(valor);       
    }

    public boolean isAtivo() {
        return ativo;
    }

    public void setAtivo(boolean ativo) {
        this.ativo = ativo;
    }

    @Override
    public String toString() {
        return "PedidoItemModelo \ncod_prod=" + cod_prod + "\n cod_pedido=" + cod_pedido + "\n nome_item=" + nome_item
                + "\n quantidade=" + quantidade + "\n preco=" + preco + "\n sequencia=" + sequencia + "]" +"\n\n\n";
    }
}

1 个答案:

答案 0 :(得分:1)

我使用以下代码来获取listView的孩子:

function getCountryId($country) {
    $db = mysqli_connect(DB_HOSTNAME,DB_USERNAME,DB_PASSWORD,DB_DATABASE);
    mysqli_set_charset( $db, 'utf8' );
    if ($stmt = mysqli_prepare($db, "SELECT country_id FROM oa_country WHERE name=?")) {

        /* bind parameters for markers */
        mysqli_stmt_bind_param($stmt, "s", $country);

        /* execute query */
        mysqli_stmt_execute($stmt);

        /* bind result variables */
        mysqli_stmt_bind_result($stmt, $countryidr);
        $thecountryid = $countryidr;
        echo $thecountryid;  //no echo.
        /* fetch value */
        mysqli_stmt_fetch($stmt);
        /* close statement */
        mysqli_stmt_close($stmt);

    } 
    return $thecountryid;  //no return.
}

我使用了listview的方法“getChildAt”,在此之后,我使用了findViewById和我需要获取文本值的TextView