Selected Item Listview Retrofit

2

I have an application that uses retrofit for connection, and in it I have a listview where I want to make a long click on it and select the position item and make a webservice post with that item, everything is already working, getting the part to select the right item, the way I did it selects, but only the first one on the list and it disturbs me.

  listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

                    @Override
                    public boolean onItemLongClick(final AdapterView<?> adapterView, final View view, final int position, long l) {
                        AlertDialog.Builder builder = new AlertDialog.Builder(BuscaActivity.this);
                        builder.setTitle("Deseja inserir na lista?");
                        builder.setPositiveButton("Sim", new DialogInterface.OnClickListener() {

                            public void onClick(DialogInterface arg0, int arg1) {
                                ListaProduto produto = new ListaProduto();

                                //TextView codigoInterno = (TextView) findViewById(R.id.codigointerno);
                                //String interno = codigoInterno.getText().toString();

                                //TextView codigoEan = (TextView) findViewById(R.id.codigo_ean);
                                //String ean = codigoEan.getText().toString();

                                //produto.setCodigoproduto(interno);
                                //produto.setCodigoean(ean);
                                produto.setUclogin(getSharedPreferences(PREFS_USER, Context.MODE_PRIVATE).getString("PrefUser", ""));

                                //Toast.makeText(getApplicationContext(), "Posição: "+adapterView.getSelectedItem().toString(), Toast.LENGTH_SHORT).show();

                                produto.setCodigoproduto(((Produto) adapterView.getSelectedItem()).getCodigointerno());
                                produto.setCodigoean(((Produto) adapterView.getSelectedItem()).getCodigoean());

                                loadJsonLista(produto);
                            }
                        });
                            builder.setNegativeButton("Não", null);
                    alerta = builder.create();
                    alerta.show();

                    return true;
                }
            });

I want to pull the codigointernode into the set, and the set code is the code_ean

My model:

public class Produto {
public String codigointerno;
public String codigoean;
public String descricaocompleta;
private String descricaoreduzida;
private double precovenda;
private double precocusto;
private double estoque;
private double margem;


public String getCodigointerno() {
    return codigointerno;
}

public void setCodigointerno(String codigointerno) {
    this.codigointerno = codigointerno;
}

public String getCodigoean() {
    return codigoean;
}

public void setCodigoean(String codigoean) {
    this.codigoean = codigoean;
}

public String getDescricaocompleta() {
    return descricaocompleta;
}

public void setDescricaocompleta(String descricaocompleta) {
    this.descricaocompleta = descricaocompleta;
}

public String getDescricaoreduzida() {
    return descricaoreduzida;
}

public void setDescricaoreduzida(String descricaoreduzida) {
    this.descricaoreduzida = descricaoreduzida;
}

public double getPrecovenda() {
    return precovenda;
}

public void setPrecovenda(double precovenda) {
    this.precovenda = precovenda;
}

public double getPrecocusto() {
    return precocusto;
}

public void setPrecocusto(double precocusto) {
    this.precocusto = precocusto;
}

public double getEstoque() {
    return estoque;
}

public void setEstoque(double estoque) {
    this.estoque = estoque;
}

public double getMargem() {
    return margem;
}

public void setMargem(double margem) {
    this.margem = margem;
}

My adapter:

public class ProdutoAdapter extends ArrayAdapter<Produto> {
private Context context;
private List<Produto> values;

public ProdutoAdapter(Context context, List<Produto> values) {
    super(context, R.layout.list_item_pagination, values);

    this.context = context;
    this.values = values;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;

    if (row == null) {
        LayoutInflater inflater =
                (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        row = inflater.inflate(R.layout.list_item_pagination, parent, false);
    }
    TextView interno = (TextView)row.findViewById(R.id.codigointerno);
    TextView ean = (TextView) row.findViewById(R.id.codigo_ean);
    TextView completa = (TextView) row.findViewById(R.id.descricao_completa);
    TextView reduzida = (TextView) row.findViewById(R.id.descricao_reduzida);
    TextView venda = (TextView) row.findViewById(R.id.valor_venda);
    TextView custo = (TextView) row.findViewById(R.id.valor_custo);
    TextView estoque = (TextView) row.findViewById(R.id.valor_estoque);
    TextView margem = (TextView) row.findViewById(R.id.valor_margem);

    Produto item = values.get(position);

    String message_interno = item.getCodigointerno();
    String message_ean = item.getCodigoean();
    String message_completa = item.getDescricaocompleta();
    String message_reduzida = item.getDescricaoreduzida();
    double message_venda = item.getPrecovenda();
    double message_custo = item.getPrecocusto();
    double message_estoque = item.getEstoque();
    double message_margem = item.getMargem();

    DecimalFormat d_venda = new DecimalFormat(",##0.00");
    DecimalFormat d_custo = new DecimalFormat(",##0.000");
    DecimalFormat d_estoque = new DecimalFormat(",##0.000");
    DecimalFormat d_margem = new DecimalFormat(",##0.00");

    interno.setText(message_interno);
    ean.setText(message_ean);
    completa.setText(message_completa);
    reduzida.setText(message_reduzida);
    venda.setText(d_venda.format(message_venda));
    custo.setText(d_custo.format(message_custo));
    estoque.setText(d_estoque.format(message_estoque));
    margem.setText(d_margem.format(message_margem));

    return row;
}

My retrofit connection:

   public void loadJsonLista(ListaProduto produto){

    Retrofit.Builder builder = new Retrofit.Builder()
            .baseUrl("http://"+getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE).getString("PrefHost", "") +":8080/FazendaWebservice/webresources/fazenda/")
            .addConverterFactory(GsonConverterFactory.create());

    Retrofit retrofit = builder.build();

    ListaProdutosClient client = retrofit.create(ListaProdutosClient.class);
    Call<ListaProduto> call = client.reposForUser(produto);

    call.enqueue(new Callback<ListaProduto>() {
        @Override
        public void onResponse(Call<ListaProduto> call, Response<ListaProduto> response) {
                ListaProduto produtos = response.body();
                Toast.makeText(getApplicationContext(), "Código: " + produtos.getCodigoproduto(), Toast.LENGTH_SHORT).show();
        }
        @Override
        public void onFailure(Call<ListaProduto> call, Throwable t) {
            //Toast.makeText(BuscaActivity.this, "Erro ao criar lista", Toast.LENGTH_SHORT).show();
        }
    });
}

Error giving is in this line produto.setCodigoproduto(((Produto) adapterView.getSelectedItem()).getCodigointerno());

  

09-26 10: 59: 24.228 12792-12792 / br.com.volpix.consultaproducts   E / AndroidRuntime: FATAL EXCEPTION: main                                                                                   Process: br.com.volpix.consultaproducts, PID: 12792                                                                                   java.lang.NullPointerException: Attempt to invoke virtual method   'java.lang.String   br.volpix.consultaproducts.Product.getInternalCode () 'on a null   object reference                                                                                       at   br.volpix.consultaproducts.BuscaActivity $ 2 $ 1.onClick (SearchActivity.java:107)                                                                                       at   android.support.v7.app.AlertController $ ButtonHandler.handleMessage (AlertController.java:161)                                                                                       at android.os.Handler.dispatchMessage (Handler.java:102)                                                                                       at android.os.Looper.loop (Looper.java:154)                                                                                       at android.app.ActivityThread.main (ActivityThread.java:6165)                                                                                       at java.lang.reflect.Method.invoke (Native Method)                                                                                       at   com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:888)                                                                                       at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:778)

    
asked by anonymous 26.09.2017 / 15:29

0 answers