0

The ImageView responsible for calculating the amount of items is not responding. Had done in the Adapter class, but still not calculated and a friend of mine said I could not calculate the adapter , because the class lost references, anyone know why ? And what better way to solve this problem?

Class Produto:

public class Produto implements Serializable{

    /**
     *
     */
    private static final long serialVersionUID = 1L;

    private String conteudo;
    private double valor;
    private int id;
    private boolean selecionado = false;

    public Produto(String conteudo, double valor, int id) {
        this.conteudo = conteudo;
        this.valor = valor;
        this.id = id;
    }

    public String getConteudo() {
        return conteudo;
    }

    public double getValor() {
        return valor;
    }

    public int getId() {
        return id;
    }

    public boolean isSelecionado() {
        return selecionado;
    }

    public void setSelecionado(boolean selecionado) {
        this.selecionado = selecionado;
    }
}

Adapter:

public class AdapterProduto extends BaseAdapter {
    private Context ctx;
    private List<Produto> listaProdutos;
    private EditText contagem;
    private ImageView soma;
    private int count;


    public AdapterProduto(Context ctx, List<Produto> listaProdutos) {
        this.ctx = ctx;
        this.listaProdutos = listaProdutos;
    }

    @Override
    public int getCount() {

        return listaProdutos.size();
    }

    @Override
    public Object getItem(int posicao) {

        return listaProdutos.get(posicao);
    }

    @Override
    public long getItemId(int posicao) {

        return listaProdutos.get(posicao).getId();
    }

    @Override
    public View getView(int posicao, View convertView, ViewGroup parent) {

        Produto produto = listaProdutos.get(posicao);

        View view = LayoutInflater.from(ctx).inflate(R.layout.layout_lista, null);

        TextView texto = (TextView) view.findViewById(R.id.textViewLista);
        ImageView soma = (ImageView) view.findViewById(R.id.ImagemAddProduto);
        ImageView sub = (ImageView) view.findViewById(R.id.ImagemSubProduto);
        ImageView excluir = (ImageView) view.findViewById(R.id.ImagemExcluir);
        EditText total = (EditText) view.findViewById(R.id.contagemDePodutosDaLista);

        //Setar os valores de imagens
        texto.setText(produto.getConteudo());
        soma.setImageResource(R.drawable.ic_add);
        sub.setImageResource(R.drawable.ic_delete);
        excluir.setImageResource(R.drawable.ic_trash);
        //total.set     
        return view;

    }

}

Class Produtos:

public class Produtos extends Activity {

    private ArrayList<Produto> listaProduto;

    private ListView listView;
    private EditText contagem;
    private ImageView soma;
    private int count;
    private View viewDosBotoes;
    private AdapterProduto adapterProduto;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.produtos);

        Log.i("Produtos", "Entrou no metodo onCreate()");

        listView = (ListView) findViewById(R.id.listViewProduto);

        Log.i("Produtos", "Chamando o metodo preencherLista()");

        viewDosBotoes = LayoutInflater.from(Produtos.this).inflate(R.layout.layout_lista, null);

        preencheLista(viewDosBotoes);

        //calculaQuantidadeDeItens(viewDosBotoes);

    }

    private void preencheLista(View view) {

        listaProduto = new ArrayList<Produto>();

        Produto produto1 = new Produto("Água 1L", 2.00, 1);
        listaProduto.add(produto1);

        Produto produto2 = new Produto("Coca-Cola 300ML", 4.75, 2);
        listaProduto.add(produto2);

        Produto produto3 = new Produto("Pastel 1UN", 2.50, 3);
        listaProduto.add(produto3);

        adapterProduto = new AdapterProduto(Produtos.this,
                listaProduto);

        listView.setAdapter(adapterProduto);

        Log.i("Produtos", "Lista preenchida!");

        Log.i("Produtos", "Chamando o método para calcular a quantidade de itens");
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapter, View view, int position, long id) {
                Log.i("Produtos", "Preparando para fazer a contagem");

                contagem = (EditText) viewDosBotoes.findViewById(R.id.contagemDePodutosDaLista);
                soma = (ImageView) viewDosBotoes.findViewById(R.id.ImagemAddProduto);

                Integer.parseInt(contagem.getText().toString());
                count = count + 1;
                contagem.setText(String.valueOf(count));
                Toast.makeText(Produtos.this, "Click " + count, Toast.LENGTH_SHORT);
                Log.i("Produtos", "Contagem bem sucedida!");
            }

        });

    }

    public View calculaQuantidadeDeItens(View viewDosBotoes) {

        Log.i("Produtos", "Preparando para fazer a contagem 1");
        contagem = (EditText) viewDosBotoes.findViewById(R.id.contagemDePodutosDaLista);
        soma = (ImageView) viewDosBotoes.findViewById(R.id.ImagemAddProduto);

        Log.i("Produtos", "Preparando para calcular a contagem 2");
        soma.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (view.getId() == soma.getId()) {
                    Integer.parseInt(contagem.getText().toString());
                    count = count + 1;
                    contagem.setText(String.valueOf(count));
                    Toast.makeText(Produtos.this, "Click " + count, Toast.LENGTH_SHORT).show();

                    Log.i("CalculoDaCompra", "Contagem bem sucedida!");
                }
            }
        });

        return viewDosBotoes;
    }

}

produtos XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/listViewProduto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Total: R$" />

        <EditText
            android:id="@+id/mostraTotalDaCompra"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>

    <Button
        android:id="@+id/botaoAddPedidoFinal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Finalizar Pedido" />

</LinearLayout>

layout_lista XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/textViewLista"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="15dp"
        android:text="@string/textview" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="right"
        android:orientation="horizontal" >

        <ImageView
            android:id="@+id/ImagemSubProduto"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_gravity="center"
            android:src="@drawable/ic_delete" />

        <EditText
            android:id="@+id/contagemDePodutosDaLista"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="number"
            android:numeric="integer"
            android:text="0" />

        <ImageView
            android:id="@+id/ImagemAddProduto"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_gravity="center"
            android:src="@drawable/ic_add"/>

        <ImageView
            android:id="@+id/ImagemExcluir"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_gravity="center"
            android:src="@drawable/ic_trash" />
    </LinearLayout>

</LinearLayout>
  • 1
    If you want to do some action on ImageView click which is inside row of ListView then set `setOnClickListener` for ImageView in `getView` method of Adapter – ρяσѕρєя K Jan 28 '15 at 04:13
  • what is in you Product object? do you have the log of the crash? also try to implement ViewHolder, http://stackoverflow.com/questions/11945563/how-listviews-recycling-mechanism-works – arthur_gg Jan 28 '15 at 04:47
  • So ρяσѕρєя K , had done it, but did not work . A friend of mine looked at the code and said to implement this method in own list of products class, because the other way a class lost as references. – Eric Andrade Jan 28 '15 at 16:14
  • arthur_gg I had forgotten to put the Product class. Re edited the post codes. – Eric Andrade Jan 28 '15 at 16:21

0 Answers0