Trazendo dados errados

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]

<?xml version="1.0" encoding="UTF-8"?>

 <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" />

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

Olá
Posta o VendaDAO, por favor.

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();
	}

}

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

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

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

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

Sim.

Ok, vou corrigir. Topico encerrado.

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

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?

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

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.

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