Trazendo dados errados

13 respostas
F

Pessoal:

Tenho as Classes ListarVendas, VendaVO, VendaAdapter e VendaDAO

Para listar as Vendas, utilizo a classe VendaAdapter e também a ListarVendas.

O que acontece é o seguinte: no itens_lista_venda.xml é onde mostro as vendas realizadas. Quando seto no VendaAdapter os dados que quero visualizar, alguns estão vindos trocados.

Por exemplo:

TextView txtCliente = (TextView) v.findViewById(com.br.aquavendas.R.id.tvCliente);
txtCliente.setText(vo.getData_Venda().toString()); // Aqui é um deles. Se coloco getId_Cliente, mostra a data. Se coloco getData_Venda ai mostra o nome do Cliente.

Vou listar as classes aqui pra ajudar. Não estou identificando onde está errado.

VendaAdapter
import java.util.List;

import com.br.aquavendas.vo.VendaVO;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class VendaAdapter extends BaseAdapter{

	private Context ctx;
	private List<VendaVO> lista_venda;
	
	public VendaAdapter(Context ctx, List<VendaVO> lista_venda){
		this.ctx = ctx;
		this.lista_venda = lista_venda;
	}
	
	@Override
	public int getCount() {
		return lista_venda.size();
	}

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

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

	@Override
	public View getView(int position, View view, ViewGroup viewGroup) {
		VendaVO vo = (VendaVO)getItem(position);
		
		LayoutInflater layout = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
		View v = layout.inflate(com.br.aquavendas.R.layout.itens_lista_venda, null);

		TextView txtProduto = (TextView) v.findViewById(com.br.aquavendas.R.id.tvProduto);
		txtProduto.setText(vo.getId_Produto().toString());
		
		TextView txtCliente = (TextView) v.findViewById(com.br.aquavendas.R.id.tvCliente);
		txtCliente.setText(vo.getData_Venda().toString()); // Aqui ta mostrando o nome do cliente
		
		TextView txtData = (TextView) v.findViewById(com.br.aquavendas.R.id.tvDataVenda);
		txtData.setText(vo.getId_Cliente().toString()); // aqui a data da venda
		
		TextView txtQtde = (TextView) v.findViewById(com.br.aquavendas.R.id.tvQuantidade);
		txtQtde.setText(vo.getQuantidade().toString());
		
		TextView txtValorUnitario = (TextView) v.findViewById(com.br.aquavendas.R.id.tvUnitario);
		txtValorUnitario.setText(vo.getDesconto().toString()); // aqui mostra o Valor Unitario
		
		TextView txtDesconto = (TextView) v.findViewById(com.br.aquavendas.R.id.tvDesconto);
		txtDesconto.setText(vo.getValorUnitario().toString()); // aqui mostra o Desconto
		
		TextView txtTotal = (TextView) v.findViewById(com.br.aquavendas.R.id.tvTotal);
		txtTotal.setText(vo.getValorTotal().toString());
		
		TextView txtVendedor = (TextView) v.findViewById(com.br.aquavendas.R.id.tvVendedor);
		txtVendedor.setText(vo.getVendedor().toString());

		return v;
	}
}

ListarVenda

package com.br.aquavendas;

import java.util.List;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.Toast;

import com.br.aquavendas.adapters.ProdutoAdapter;
import com.br.aquavendas.adapters.VendaAdapter;
import com.br.aquavendas.dao.ProdutoDAO;
import com.br.aquavendas.dao.VendaDAO;
import com.br.aquavendas.vo.ProdutoVO;
import com.br.aquavendas.vo.VendaVO;

public class ListarVenda extends Activity{
	
	ListView ltw;
	List<VendaVO> lista_venda = null;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.listar_venda);
		ltw = (ListView) findViewById(R.id.ltvDados);
		
		registerForContextMenu(ltw);
		
		ltw.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
					long arg3) {
				Toast.makeText(getBaseContext(), "AQUI!", Toast.LENGTH_LONG).show();
			}
		});
		
	}
	
	@Override
	public void onResume(){
		super.onResume();
		VendaDAO dao = new VendaDAO(getBaseContext());
		lista_venda = dao.getAll();
		ltw.setAdapter(new VendaAdapter(getBaseContext(), lista_venda));
	}
	
}

VendaVO

package com.br.aquavendas.vo;

public class VendaVO {
	
	private Integer id;
	private String data_Venda;
	private String id_Cliente;
	private String id_Produto;
	private String quantidade;
	private String desconto;
	private String valorUnitario;
	private String valorTotal;
	private String vendedor;
	
	public VendaVO(){
		
	}
	
	public VendaVO(int id, String data_Venda, String id_Cliente, String id_Produto, String quantidade, String desconto, String valorUnitario, String valorTotal, String vendedor){
		this.id = id;
		this.data_Venda = data_Venda;
		this.id_Cliente = id_Cliente;
		this.id_Produto = id_Produto;
		this.quantidade = quantidade;
		this.desconto   = desconto;
		this.valorUnitario = valorUnitario;
		this.valorTotal = valorTotal;
		this.vendedor = vendedor;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}
	
	public String getData_Venda() {
		return data_Venda;
	}

	public void setData_Venda(String data_Venda) {
		this.data_Venda = data_Venda;
	}

	public String getId_Cliente() {
		return id_Cliente;
	}

	public void setId_Cliente(String id_Cliente) {
		this.id_Cliente = id_Cliente;
	}

	public String getId_Produto() {
		return id_Produto;
	}

	public void setId_Produto(String id_Produto) {
		this.id_Produto = id_Produto;
	}

	public String getQuantidade() {
		return quantidade;
	}

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

	public String getDesconto() {
		return desconto;
	}

	public void setDesconto(String desconto) {
		this.desconto = desconto;
	}

	public String getValorUnitario() {
		return valorUnitario;
	}

	public void setValorUnitario(String valorUnitario) {
		this.valorUnitario = valorUnitario;
	}

	public String getValorTotal() {
		return valorTotal;
	}

	public void setValorTotal(String valorTotal) {
		this.valorTotal = valorTotal;
	}

	public String getVendedor() {
		return vendedor;
	}

	public void setVendedor(String vendedor) {
		this.vendedor = vendedor;
	}
	
}

itens_lista_venda.xml

[code]

android:layout_width="fill_parent"
android:orientation="horizontal"
android:id="@+id/rowLayout"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">

android:id="@+id/tvUnitario"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/tvQuantidade"
android:text="Unitario"
android:textAppearance="?android:attr/textAppearanceMedium" />

android:id="@+id/tvDesconto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/tvUnitario"
android:text="Desconto"
android:textAppearance="?android:attr/textAppearanceMedium" />

android:id="@+id/tvTotal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/tvDesconto"
android:text="Total"
android:textAppearance="?android:attr/textAppearanceMedium" />

android:id="@+id/tvVendedor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/tvTotal"
android:text="Vendedor"
android:textAppearance="?android:attr/textAppearanceMedium" />

android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="Produto:"
android:textColor="#FF0000"
android:textAppearance="?android:attr/textAppearanceLarge" />

android:id="@+id/tvProduto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/tvCliente"
android:layout_alignParentRight="true"
android:layout_marginRight="37dp"
android:gravity="right"
android:text="Produto"
android:textAppearance="?android:attr/textAppearanceMedium" />

android:id="@+id/tvCliente"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/tvProduto"
android:layout_below="@+id/textView1"
android:text="Cliente"
android:textAppearance="?android:attr/textAppearanceMedium" />

android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/tvCliente"
android:layout_alignParentLeft="true"
android:text="Cliente:"
android:textColor="#FF0000"
android:textAppearance="?android:attr/textAppearanceLarge" />

android:id="@+id/tvDataVenda"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/textView2"
android:gravity="right"
android:text="Data"
android:textAppearance="?android:attr/textAppearanceMedium" />

android:id="@+id/tvQuantidade"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/tvDataVenda"
android:text="Quantidade"
android:textAppearance="?android:attr/textAppearanceMedium" />

Essas são as Classes, por favor, me ajudem. Não estou conseguindo.

13 Respostas

A

Olá
Posta o VendaDAO, por favor.

F

Segue o VendaDAO

package com.br.aquavendas.dao;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.br.aquavendas.banco.DB;
import com.br.aquavendas.vo.ProdutoVO;
import com.br.aquavendas.vo.VendaVO;

public class VendaDAO {
	
	private static String table_name = "vendas";
	private static Context ctx;
	private static String[] columns = {"id", "data_venda",  "id_cliente", "id_produto", "qtde", "unitario", "desconto", "total", "vendedor"};
	
	
	public VendaDAO(Context ctx){
		this.ctx = ctx;
	}
	
	public boolean insert(VendaVO vo){
		SQLiteDatabase db = new DB(ctx).getWritableDatabase();
		
		ContentValues ctv = new ContentValues();
		ctv.put("data_venda", vo.getData_Venda());
		ctv.put("id_cliente", vo.getId_Cliente());
		ctv.put("id_produto", vo.getId_Produto());
		ctv.put("qtde", vo.getQuantidade());
		ctv.put("unitario", vo.getValorUnitario());
		ctv.put("desconto", vo.getDesconto());
		ctv.put("total", vo.getValorTotal());
		ctv.put("vendedor", vo.getVendedor());
		
		return (db.insert(table_name, null, ctv) > 0);
		
	}
	
	public boolean delete(VendaVO vo){
		SQLiteDatabase db = new DB(ctx).getWritableDatabase();
		
		return (db.delete(table_name, "id=?", new String[]{vo.getId().toString()}) > 0);
	}
	
	public boolean update(VendaVO vo){
		SQLiteDatabase db = new DB(ctx).getWritableDatabase();
		
		ContentValues ctv = new ContentValues();
		ctv.put("data_venda", vo.getData_Venda());
		ctv.put("id_cliente", vo.getId_Cliente());
		ctv.put("id_produto", vo.getId_Produto());
		ctv.put("qtde", vo.getQuantidade());
		ctv.put("unitario", vo.getValorUnitario());
		ctv.put("desconto", vo.getDesconto());
		ctv.put("total", vo.getValorTotal());
		ctv.put("vendedor", vo.getVendedor());
		
		return (db.update(table_name, ctv, "id=?", new String[]{vo.getId().toString()}) > 0);


	}
	
	public VendaVO getById(Integer ID){
		SQLiteDatabase db = new DB(ctx).getReadableDatabase();
		
		Cursor rs = db.query(table_name, columns, "id=?", new String[]{ID.toString()}, null, null, null);
		
		VendaVO vo = null;
		
		if(rs.moveToFirst()){
			vo = new VendaVO();
			
			vo.setData_Venda(rs.getString(rs.getColumnIndex("data_venda")));
			vo.setId(rs.getInt(rs.getColumnIndex("id")));
			vo.setId_Cliente(rs.getString(rs.getColumnIndex("id_cliente")));
			vo.setId_Produto(rs.getString(rs.getColumnIndex("id_produto")));
			vo.setQuantidade(rs.getString(rs.getColumnIndex("qtde")));
			vo.setValorUnitario(rs.getString(rs.getColumnIndex("unitario")));
			vo.setDesconto(rs.getString(rs.getColumnIndex("desconto")));
			vo.setValorTotal(rs.getString(rs.getColumnIndex("total")));
			vo.setVendedor(rs.getString(rs.getColumnIndex("vendedor")));
		}
		rs.close();
		return vo;
	}
	
	public List<VendaVO> getAll(){
		SQLiteDatabase db = new DB(ctx).getReadableDatabase();
		
		// Cursor rs = db.rawQuery("SELECT * FROM vendas", null);
		
		Date todaysDate = new Date();
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
		String formattedDate = formatter.format(todaysDate);
		 
//		Cursor rs = db.rawQuery("SELECT vendas.[data_venda], clientes.[id], clientes.contato,  produtos.[produto], vendas.[qtde], vendas.[unitario], vendas.[desconto], vendas.[total], vendas.[vendedor] FROM clientes INNER JOIN vendas ON vendas.[id_cliente]=clientes.[id] INNER JOIN produtos ON vendas.[id_produto]=produtos.id WHERE vendas.[data_venda]=" + formattedDate, null);
		Cursor rs = db.rawQuery("SELECT vendas.[data_venda], clientes.[id], clientes.contato,  produtos.[produto], vendas.[qtde], vendas.[unitario], vendas.[desconto], vendas.[total], vendas.[vendedor] FROM clientes INNER JOIN vendas ON vendas.[id_cliente]=clientes.[id] INNER JOIN produtos ON vendas.[id_produto]=produtos.id", null);
		 		

		List<VendaVO> lista_venda = new ArrayList<VendaVO>();
		while(rs.moveToNext()){
	    //  VendaVO vo = new VendaVO(rs.getInt(rs.getColumnIndex("id")),rs.getString(rs.getColumnIndex("data_venda")),rs.getString(rs.getColumnIndex("id_cliente")),rs.getString(rs.getColumnIndex("id_produto")),rs.getString(rs.getColumnIndex("qtde")),rs.getString(rs.getColumnIndex("unitario")),rs.getString(rs.getColumnIndex("desconto")),rs.getString(rs.getColumnIndex("total")),rs.getString(rs.getColumnIndex("vendedor")));
	        VendaVO vo = new VendaVO(rs.getInt(rs.getColumnIndex("id")),rs.getString(rs.getColumnIndex("contato")),rs.getString(rs.getColumnIndex("data_venda")),rs.getString(rs.getColumnIndex("produto")),rs.getString(rs.getColumnIndex("qtde")),rs.getString(rs.getColumnIndex("unitario")),rs.getString(rs.getColumnIndex("desconto")),rs.getString(rs.getColumnIndex("total")),rs.getString(rs.getColumnIndex("vendedor")));

	        lista_venda.add(vo);
		}
		rs.close();
		return lista_venda;
	}
	
	public void fecha_banco(){
		SQLiteDatabase db = new DB(ctx).getWritableDatabase();
		db.close();
	}

}
A

Você está passando os parâmetros fora da ordem no construtor do VendaVO em getAll() no VendaDAO.
Os parâmetros são posicionais.
Abraço

F

Então seria somente colocar na ordem que quero no VO? E nas demais classes, seguir como está no VO, correto?

A

Uma vez criado o objeto, a recuperação dos campos é pelo get…(), em qualquer ordem.

F

Ok, então seria somente por na ordem que quero no VO, correto?

A

Sim.

F

Ok, vou corrigir. Topico encerrado.

A

Na medida do possível a gente ajuda…
Tudo de bom!

F

A H Gusukuma, estou com uma dúvida:

xml itens_lista_venda

<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout
 android:layout_width="fill_parent"
 android:orientation="horizontal"
 android:id="@+id/rowLayout"
 android:layout_height="fill_parent"
 xmlns:android="http://schemas.android.com/apk/res/android">

     <TextView
         android:id="@+id/tvUnitario"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignParentLeft="true"
         android:layout_below="@+id/tvQuantidade"
         android:text="Unitario"
         android:textAppearance="?android:attr/textAppearanceMedium" />

     <TextView
         android:id="@+id/tvDesconto"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignParentLeft="true"
         android:layout_below="@+id/tvUnitario"
         android:text="Desconto"
         android:textAppearance="?android:attr/textAppearanceMedium" />

      <TextView
          android:id="@+id/tvTotal"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentLeft="true"
          android:layout_below="@+id/tvDesconto"
          android:text="Total"
          android:textAppearance="?android:attr/textAppearanceMedium" />

      <TextView
          android:id="@+id/tvVendedor"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentLeft="true"
          android:layout_below="@+id/tvTotal"
          android:text="Vendedor"
          android:textAppearance="?android:attr/textAppearanceMedium" />

      <TextView
          android:id="@+id/textView1"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentLeft="true"
          android:layout_alignParentTop="true"
          android:text="Produto:"
          android:textColor="#FF0000"
          android:textAppearance="?android:attr/textAppearanceLarge" />

      <TextView
          android:id="@+id/tvProduto"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_above="@+id/tvCliente"
          android:layout_alignParentRight="true"
          android:layout_marginRight="37dp"
          android:gravity="right"
          android:text="Produto"
          android:textAppearance="?android:attr/textAppearanceMedium" />

      <TextView
          android:id="@+id/tvCliente"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignLeft="@+id/tvProduto"
          android:layout_below="@+id/textView1"
          android:text="Cliente"
          android:textAppearance="?android:attr/textAppearanceMedium" />

      <TextView
          android:id="@+id/textView2"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignBottom="@+id/tvCliente"
          android:layout_alignParentLeft="true"
          android:text="Cliente:"
          android:textColor="#FF0000"
          android:textAppearance="?android:attr/textAppearanceLarge" />

      <TextView
          android:id="@+id/tvDataVenda"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentLeft="true"
          android:layout_below="@+id/textView2"
          android:gravity="right"
          android:text="Data"
          android:textAppearance="?android:attr/textAppearanceMedium" />

      <TextView
          android:id="@+id/tvQuantidade"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentLeft="true"
          android:layout_below="@+id/tvDataVenda"
          android:text="Quantidade"
          android:textAppearance="?android:attr/textAppearanceMedium" />
 
</RelativeLayout>

Se coloco um TextView com o texto: Data da Venda, vem tudo trocado. O que será? Tem alguma sugestão pra esse xml?

A

Atualiza o banco. Provavelmente os dados da tabela estejam errados.

F

Ja resolvi. Arrumei a ordem no DAO e VO e refiz o xml. Valeu meu amigo. Se não fosse você, não conseguiria. Valeu. Falta só aquele outro la que to tentando.

F

A H Gusukuma

Obrigado pela dica que me deu para os dados que estavam trazendo errado. Estou tentando arrumar aquele outro.


http://www.guj.com.br/java/304744-erro-estranho-ao-selecionar-item-de-lista

Criado 26 de setembro de 2013
Ultima resposta 8 de out. de 2013
Respostas 13
Participantes 2