ListView + EditText + Duvida

Pessoal, desculpe-me por qualquer erro meu, sou novo aqui no Forúm e novo com desenvolvimento android.
mais o que está acontecendo comigo é o seguinte, tenho um lista, e nessa lista tenho um edit text, (estou fazendo um cardapio de lanche), quando eu clico no edit ele sobe o teclado numérico só que dentro de alguns instantes ele perde o foco do edit e meu teclado se transforma em teclado com letras… isso é problema, a dias venho tentando solucionar esse problema e não consigo, tenho outro problema tambem, quando digito valor desejado dentro do campo, quando aperto para esconder o teclado… ele faz com o dado digitado seja inserido no edit inferior ou superior… ele muda de posoção. são minhas duas duvidas, alguem sabe como me ajudar? é meio urgente, estou colocando aqui o código do meu adapter, e o codigo do meu XML , e o que precisarem é só falar, se quizerem adc no msn tambem , fico o dia inteiro ON *

BaseAdapter

package br.virtual.lista;


import java.text.DecimalFormat;
import java.util.List;

import br.virtual.principal.ActConstantes;
import br.virtual.principal.R;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;

public class ActCardapioAdapter extends BaseAdapter
{
	
	
	private final List<ActCardapioVO> cardapios;
	private Context mContext;
	
	
	static class ViewHolder
	{
		public  TextView descri, descridetalhada, valor, codigo;
		public  CheckBox chk;
		public  EditText edqtde;
		public byte[] imgprod;
		public ImageView imgproduto;
	}

	
	
	public ActCardapioAdapter(Context context, List<ActCardapioVO> cardapios)
	{
		this.cardapios = cardapios;
		mContext = context;
		
	}
	

	public int getCount() 
	{
		return  cardapios.size();
	}

	public Object getItem(int position) 
	{
		return cardapios.get(position);
	}

	public long getItemId(int position) 
	{
		return cardapios.get(position).getCodigo();
	}

	public View getView(final int position, View convertView, ViewGroup parent) 
	{
		//View view = null;
		if (convertView == null)
		{
			
			LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
			convertView = inflater.inflate(R.layout.layout_produtos, null);
			
			
			ViewHolder holder = new ViewHolder();
			holder = new ViewHolder();
			holder.codigo = (TextView)convertView.findViewById(R.id.txtCodigoProd);
			holder.descri = (TextView)convertView.findViewById(R.id.txtNome);
			holder.descridetalhada = (TextView)convertView.findViewById(R.id.txtDescricao);
			holder.valor = (TextView)convertView.findViewById(R.id.txtPreco);
			holder.chk = (CheckBox)convertView.findViewById(R.id.checkBox1);
			holder.edqtde = (EditText)convertView.findViewById(R.id.edqtde);
			holder.imgproduto = (ImageView)convertView.findViewById(R.id.imgProduto);
			
			
			convertView.setTag(holder);
			holder.chk.setTag(getItem(position));
			holder.edqtde.setTag(getItem(position));
		}
		else
		{
			//view = convertView;
			((ViewHolder) convertView.getTag()).chk.setTag(cardapios.get(position));
			((ViewHolder) convertView.getTag()).edqtde.setTag(cardapios.get(position));
		}
		
		
		//formatando o campo preço.
		DecimalFormat df = new DecimalFormat("#,###,##0.00");
		
		final ViewHolder holder = (ViewHolder) convertView.getTag();
		final ActCardapioVO cardapio = cardapios.get(position);
		holder.codigo.setText(String.valueOf(cardapio.Codigo));
		holder.descri.setText(cardapio.getDescri());
		holder.descridetalhada.setText(cardapio.getDescridetalhada());
		holder.valor.setText(String.valueOf(df.format(Float.valueOf(cardapio.getValor()))));
		
		if (cardapio.getImgprod() != null)
		{
			Bitmap bmp = BitmapFactory.decodeByteArray(cardapio.getImgprod(), 0, cardapio.getImgprod().length);
			holder.imgproduto.setImageBitmap(bmp);
		}
		
		holder.chk.setOnClickListener(new View.OnClickListener() 
		{
			public void onClick(View v) 
			{
				CheckBox chk = (CheckBox) v;
				chk.setTag(cardapio);
				
				SQLiteDatabase db = mContext.openOrCreateDatabase(ActConstantes.NOME_BD,Context.MODE_PRIVATE,null);
				if (chk.isChecked())
				{
					holder.edqtde.setText("0.5");
					holder.edqtde.setEnabled(false);
					String sql = "INSERT INTO PRESAIDA(CODIGO, DESCRI, QTDE) VALUES( " +  cardapios.get(position).getCodigo() +
							", '" + cardapios.get(position).getDescri() + "',   0.5);";
					
					db.execSQL(sql);
				}
				else
				{
					holder.edqtde.setText("");
					holder.edqtde.setEnabled(true);
					String sql = "DELETE FROM PRESAIDA WHERE CODIGO = " + cardapios.get(position).getCodigo() ;
					
					db.execSQL(sql);
				}
				db.close();
			}
		});
		


		holder.edqtde.setOnFocusChangeListener(new View.OnFocusChangeListener() 
		{
			public void onFocusChange(View v, boolean hasFocus) 
			{
				if (!hasFocus == true)
				{
					if (!holder.edqtde.getText().toString().equals(""))
					{
						if (holder.codigo.getText().toString().equals(String.valueOf(cardapios.get(position).getCodigo())))
						{
							SQLiteDatabase db = mContext.openOrCreateDatabase(ActConstantes.NOME_BD,Context.MODE_PRIVATE,null);
							
							String sql = "SELECT * FROM PRESAIDA WHERE CODIGO = " + cardapios.get(position).getCodigo() + 
									" AND QTDE = " + Integer.parseInt(holder.edqtde.getText().toString()); 
							
							Cursor c = db.rawQuery(sql, null);
							
							c.moveToFirst();
							if (!(c.getCount() > 0))
							{
								String sql1 = "INSERT INTO PRESAIDA(CODIGO, DESCRI, QTDE) VALUES( " +  cardapios.get(position).getCodigo() +
									", '" + cardapios.get(position).getDescri() + "', " + Integer.parseInt(holder.edqtde.getText().toString()) + ");";
				
								db.execSQL(sql1);
							}
							
							c.close();
							db.close();
						}
					}
					else
					{
					
						SQLiteDatabase db = mContext.openOrCreateDatabase(ActConstantes.NOME_BD,Context.MODE_PRIVATE,null);
					
						String sql = "SELECT * FROM PRESAIDA WHERE CODIGO = " + cardapios.get(position).getCodigo(); 
					
						Cursor c = db.rawQuery(sql, null);
						
						c.moveToFirst();
						if (c.getCount() > 0)
						{
							String sql1 = "DELETE FROM PRESAIDA WHERE CODIGO = " + cardapios.get(position).getCodigo(); 
							
							db.execSQL(sql1);
						}
						c.close();
						db.close(); 
					}
				}
			}
		});
		
		
		return convertView;
	}
}

XML layout_produto.

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

            <LinearLayout
                android:id="@+id/titulo"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal" >

                <ImageView
                    android:id="@+id/imgProduto"
                    android:layout_width="48dp"
                    android:layout_height="48dp" />

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

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

                        <TextView
                            android:id="@+id/txtCodigo"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="Cod.: "
                            android:textColor="#FFFFFF"
                            android:textSize="15sp" />

                        <TextView
                            android:id="@+id/txtCodigoProd"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="[Codigo]"
                            android:textColor="#FFFFFF"
                            android:textSize="15sp" />
                    </LinearLayout>

                    <TextView
                        android:id="@+id/txtNome"
                        android:layout_width="100dp"
                        android:layout_height="wrap_content"
                        android:lines="3"
                        android:text="[Nome do produto]"
                        android:textColor="#FFFFFF"
                        android:textSize="15sp"/>
                </LinearLayout>

                <CheckBox
                    android:id="@+id/checkBox1"
                    android:layout_width="wrap_content"
                    android:layout_height="21dp"
                    android:text="@string/chkmeia" />

                <TextView
                    android:id="@+id/txtQuantidade"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="5dp"
                    android:text="@string/Quantidade"
                    android:textColor="#FFFFFF"
                    android:textSize="12sp" />

                <EditText
                    android:id="@+id/edqtde"
                    android:layout_width="0dip"
                    android:layout_height="wrap_content"
                    android:layout_marginRight="10dp"
                    android:layout_weight="1"
                    android:ems="10"
                    android:inputType="number|numberSigned" >
                </EditText>

            </LinearLayout>

            <LinearLayout
                android:id="@+id/linearLayout1"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/titulo" >

                <TextView
                    android:id="@+id/txtDescricao"
                    android:layout_width="0dip"
                    android:layout_height="50dp"
                    android:layout_marginLeft="50dp"
                    android:layout_weight="80"
                    android:lines="3"
                    android:text="[Descrição do produto]"
                    android:textColor="#FFFFFF"
                    android:textSize="10sp" />

                <TextView
                    android:id="@+id/textView1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="R$:"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:textColor="#00BFFF" />

                <TextView
                    android:id="@+id/txtPreco"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="[Preco do produto]"
                    android:textColor="#00BFFF"
                    android:textSize="15sp" android:layout_marginRight="8dp"/>
            </LinearLayout>
</RelativeLayout>

msn: jeferson.carlos@hotmail.com

ninguém?

ainda ninguém? :confused:

HELP

o focus voce pode setar para ele ser padrao nesse edit text teu ai,

ele mudar de posicao do edit text pode ser algum hora voce pode estar passando a posicao errada da lista isso ]

espero ter ajudado

Bruno, pode me dar mais detalhes sobre o assunto? :confused:

entao do focus é voce setar qual é o campo principal para o focus quando abrir a activty que tem a tela,

se voce pude postar o trecho de codigo que chama o click da ListView fica um pouco mais facil de identificar o problema

  • aqui está :
package br.virtual.lista;

import java.util.ArrayList;
import java.util.List;
import br.virtual.principal.ActConstantes;
import br.virtual.principal.R;

import android.app.ListActivity;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ListView;



public class ActListaPrincipal extends ListActivity
{
	public int codigo;
	private List<ActCardapioVO> cardapio;
	public Button btnfinalizar, btnlimpar, btnCancelar;
	ListView lista;
	CheckBox chk;


	public void inicializaobjetos()
	{

		lista = (ListView)findViewById(android.R.id.list);
	}


	@Override
	protected void onCreate(Bundle savedInstanceState) 
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		inicializaobjetos();
		setTitle(ActConstantes.NOME_APP);
		cardapio = new ArrayList<ActCardapioVO>();


		//---------------------------------------------------------------------------------
		//-------------- RECUPERANDO VALORES DO BUNDLE PASSADOS POR PARAMETROS ------------
		//---------------------------------------------------------------------------------

		Bundle bundle = getIntent().getExtras();
		if (bundle != null)
		{
			codigo = this.getIntent().getIntExtra("codigo",0);	
		}



		SQLiteDatabase db = openOrCreateDatabase(ActConstantes.NOME_BD,Context.MODE_PRIVATE,null);
		String sql = "SELECT * FROM PRODUTO WHERE CODGRUPO = " + codigo;

		Cursor c = db.rawQuery(sql, null);

		c.moveToFirst();
		while ( !c.isAfterLast())
		{
			cardapio.add(new ActCardapioVO(c.getInt(c.getColumnIndex("CODIGO")),
							c.getString(c.getColumnIndex("DESCRI")), 
							c.getBlob(c.getColumnIndex("DESCRIDETALHADA")), 
							c.getFloat(c.getColumnIndex("AVISTA")),
							c.getBlob(c.getColumnIndex("IMGPROD")),
							false));
		
		
			c.moveToNext();
		}
		c.close();

		if(db != null)
		{
			db.close();
		}


		lista();

	}


	public void lista()
	{
		BaseAdapter adpter = new ActCardapioAdapter(ActListaPrincipal.this, cardapio);
		setListAdapter(adpter);
	}



}

como que voce ta fazendo para salvar o conteudo do edit text

:?: :?: :?: :?:

pela função ’ …

holder.edqtde.setOnFocusChangeListener(new View.OnFocusChangeListener() 
		{
			public void onFocusChange(View v, boolean hasFocus) 
			{
				if (hasFocus == true)
				{
					if (!holder.edqtde.getText().toString().equals(""))
					{
						if (holder.codigo.getText().toString().equals(String.valueOf(cardapios.get(position).getCodigo())))
						{
							SQLiteDatabase db = mContext.openOrCreateDatabase(ActConstantes.NOME_BD,Context.MODE_PRIVATE,null);
							
							String sql = "SELECT * FROM PRESAIDA WHERE CODIGO = " + cardapios.get(position).getCodigo() + 
									" AND QTDE = " + Integer.parseInt(holder.edqtde.getText().toString()); 
							
							Cursor c = db.rawQuery(sql, null);
							
							c.moveToFirst();
							if (!(c.getCount() > 0))
							{
								String sql1 = "INSERT INTO PRESAIDA(CODIGO, DESCRI, QTDE) VALUES( " +  cardapios.get(position).getCodigo() +
									", '" + cardapios.get(position).getDescri() + "', " + Integer.parseInt(holder.edqtde.getText().toString()) + ");";
				
								db.execSQL(sql1);
							}
							
							c.close();
							db.close();
						}
					}
					else
					{
					
						SQLiteDatabase db = mContext.openOrCreateDatabase(ActConstantes.NOME_BD,Context.MODE_PRIVATE,null);
					
						String sql = "SELECT * FROM PRESAIDA WHERE CODIGO = " + cardapios.get(position).getCodigo(); 
					
						Cursor c = db.rawQuery(sql, null);
						
						c.moveToFirst();
						if (c.getCount() > 0)
						{
							String sql1 = "DELETE FROM PRESAIDA WHERE CODIGO = " + cardapios.get(position).getCodigo(); 
							
							db.execSQL(sql1);
						}
						c.close();
						db.close(); 
					}
				}
			}
		});

agora aqui no trabalho ta meio corrido, eu vejo na hora do almoço isso e se voce puder poste a classe inteira para eu poder ver cada chamada de função e tudo mais

está tudo la em cima, Bruno Adc você no msn’ * se puder entrar pra gente conversar e ver o que podemos fazer. depois posto a solução aqui se conseguirmos. (: