Como inserir um textview com imageview do lado direito?

Pessoal estou querendo colocar uma imagem junto com textview, mais não consigo alinhar esta imagem no final.

A forma que fiz foi esta

O XML

[code]<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout
    android:id="@+id/InnerRelativeLayout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/pdpacote"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_toRightOf="@+id/seta"
        android:textColor="#00008B"
        android:textSize="22sp"
        android:textStyle="bold" />

    <ImageView
        android:id="@+id/seta"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:src="@drawable/azclienteseta" />
</RelativeLayout>

<TextView
    android:id="@+id/pdvalidade"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="#006400"
    android:textSize="15sp" />

<TextView
    android:id="@+id/pdstatus"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="#8B0000"
    android:textSize="15sp" />

[/code]

Tem como deixar esta imagem no final ao lado direito? Ou outra forma simples de colocar uma imagem junto com o textview?

Obrigado.

[code]

    <TextView
        android:id="@+id/pdpacote"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:text="lalalala"
        android:textColor="#00008B"
        android:textSize="22sp"
        android:textStyle="bold" />

    <ImageView
        android:id="@+id/seta"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:src="@drawable/azclienteseta" />

</RelativeLayout>[/code]

Obrigado Fabriciomais ainda não deu certo

Ficou assim agora

O XML agora está assim

[code]<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout
    android:id="@+id/InnerRelativeLayout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/pdpacote"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"           
        android:textColor="#00008B"
        android:textSize="22sp"
        android:textStyle="bold" />

    <ImageView
        android:id="@+id/seta"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:src="@drawable/azclienteseta" />
</RelativeLayout>

<TextView
    android:id="@+id/pdvalidade"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="#006400"
    android:textSize="15sp" />

<TextView
    android:id="@+id/pdstatus"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="#8B0000"
    android:textSize="15sp" />

[/code]

sua listview esta com android:layout_width=“fill_parent” ?

edit:
para melhorar a aparencia, adicionar um android:ellipsize=“marquee” no seu textview pdpacote

Voce pode usar o android:drawableRight no seu TextView para isso.

Mas não sei se é possivel adicionar eventos desta maneira.

[quote=fabriciov]sua listview esta com width=fill_parent ?

edit:
para melhorar a aparencia, adicionar um android:ellipsize=“marquee” no seu textview pdpacote[/quote]Olá Fabricio, desculpe não entendi sua resposta.

Acredito que esse Layout do Xml é usado para preencher uma ListView (um item de uma listView).

No código que te passei o imageview fica sempre no limite do parent à direita, se ele esta no meio quer dizer que o layout onde esta “hospedado” é limitado até ali.

[quote=Marky.Vasconcelos]Voce pode usar o android:drawableRight no seu TextView para isso.

Mas não sei se é possivel adicionar eventos desta maneira.[/quote]

Assim Marky Vasconcelos como você disse quase deu certo da forma que eu quero

O XML

[code]<?xml version="1.0" encoding="utf-8"?>

<TextView
    android:id="@+id/pdpacote"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:drawableRight="@drawable/azclienteseta"
    android:textColor="#00008B"
    android:textSize="22sp"
    android:textStyle="bold" />

<TextView
    android:id="@+id/pdvalidade"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="#006400"
    android:textSize="15sp" />

<TextView
    android:id="@+id/pdstatus"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="#8B0000"
    android:textSize="15sp" />

[/code]

[quote=fabriciov]Acredito que esse Layout do Xml é usado para preencher uma ListView (um item de uma listView).

No código que te passei o imageview fica sempre no limite do parent à direita, se ele esta no meio quer dizer que o layout onde esta “hospedado” é limitado até ali.[/quote]Olá Fabricio, era isso mesmo que vc falou

Arrumei la no hospedeiro

[code]

                <ListView
                    android:id="@+id/ListViewSeusPacotes"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_weight="1"
                    android:background="@drawable/shapetextview"
                    android:divider="#FFFFFF"
                    android:scrollbars="none" >
                </ListView>
            </LinearLayout>[/code]

E voltei ao mesmo XML

[code]<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout
    android:id="@+id/InnerRelativeLayout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/pdpacote"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:textColor="#00008B"
        android:textSize="22sp"
        android:textStyle="bold" />

    <ImageView
        android:id="@+id/seta"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:src="@drawable/azclienteseta" />
</RelativeLayout>

<TextView
    android:id="@+id/pdvalidade"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="#006400"
    android:textSize="15sp" />

<TextView
    android:id="@+id/pdstatus"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="#8B0000"
    android:textSize="15sp" />

[/code]

E agora ficou show

Muito obrigado senhores pela ajuda.

Se voce usar o drawableLeft e deixar a view com match_parent o resultado será o mesmo.

Pessoal aproveitando o post, agora estou com outra duvida.

Tenho aqui na imagem um listview com imagem de um envelope aberto.

Preciso incluir um envelope fechado quando não for lido a mensagem.

Tenho um select que faz isso, e ja testei e funciona, só que não sei como incluir isso no app

Tentei assim
Criei uma classe

[code]import android.widget.ImageView;

public class Mensagens {

private String titulomensagem;
private String datamensagem;
private ImageView img;
public String getTitulomensagem() {
	return titulomensagem;
}
public void setTitulomensagem(String titulomensagem) {
	this.titulomensagem = titulomensagem;
}
public String getDatamensagem() {
	return datamensagem;
}
public void setDatamensagem(String datamensagem) {
	this.datamensagem = datamensagem;
}
public ImageView getImg() {
	return img;
}
public void setImg(ImageView img) {
	this.img = img;
}	

}[/code]

E outra classe que uso para preencher os dados no listview

[code]import java.util.ArrayList;

import android.widget.ImageView;
import br.com.azsolucoes.azcliente.R;
import br.com.azsolucoes.azcliente.activities.AZClienteActivity;
import br.com.azsolucoes.azcliente.activities.MensagensActivity;
import br.com.azsolucoes.azcliente.embarcadero.DSProxy.TServerMethods1;
import br.com.azsolucoes.azcliente.embarcadero.DSRESTConnection;
import br.com.azsolucoes.azcliente.embarcadero.TDataSet;
import br.com.azsolucoes.azcliente.pojo.Mensagens;

public class ArrayMensagensCliente extends MensagensActivity {

private GetConnection gc = new GetConnection();	
private ImageView imagem;

public ArrayList<Mensagens> getSearchResultsMensagens() {
	ArrayList<Mensagens> results = new ArrayList<Mensagens>();

	DSRESTConnection conn = gc.getConnection();
	TServerMethods1 serv = new TServerMethods1(conn);
	TDataSet ds;
	// ---------------------------------------
	try {
		ds = serv.MensagensAZCliente(AZClienteActivity.login.toString()
				.trim());
		while (ds.next()) {
			Mensagens srPT2 = new Mensagens();
			String concTituloEnviado = ds.getValue("TITULO").GetAsString();
			String concDataMensagemEnviada = "-Data: "
					+ ds.getValue("DATA_MENSAGEM").GetAsString() + ", "
					+ ds.getValue("HORAS").GetAsString();
			
			String retornaImg = ds.getValue("RETORNO").GetAsString();				

			srPT2.setTitulomensagem(concTituloEnviado);
			srPT2.setDatamensagem(concDataMensagemEnviada);

// if (retornaImg.equals(“Não”)){
// imagem.setImageResource(R.drawable.mensagemnova);
// srPT2.setImg(imagem);
// } else {
// imagem.setImageResource(R.drawable.mensagemlida);
// srPT2.setImg(imagem);
// }

			results.add(srPT2);
		}

	} catch (Exception e) {
		e.printStackTrace();
	}
	return results;
}

}[/code]

Ai tentei inserir as imagens nestas linhas comentadas, mais não funciona.

Tenho outra classe que uso também junto para preencher a lista, que tentei adaptar nela, mais também não funcionou

[code]import java.util.ArrayList;

import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import br.com.azsolucoes.azcliente.R;
import br.com.azsolucoes.azcliente.activities.AZClienteActivity;
import br.com.azsolucoes.azcliente.embarcadero.DSProxy.TServerMethods1;
import br.com.azsolucoes.azcliente.embarcadero.DSRESTConnection;
import br.com.azsolucoes.azcliente.embarcadero.TDataSet;
import br.com.azsolucoes.azcliente.pojo.Mensagens;

public class MensagensBaseAdapter extends BaseAdapter {

//private GetConnection gc = new GetConnection();
private static ArrayList<Mensagens> searchArrayList;
private LayoutInflater mInflater;

public MensagensBaseAdapter(Context context, ArrayList<Mensagens> results) {
	searchArrayList = results;
	mInflater = LayoutInflater.from(context);
}

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

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

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

public View getView(int position, View convertView, ViewGroup parent) {
	ViewHolder holder;

	if (convertView == null) {
		convertView = mInflater.inflate(R.layout.custom_mensagens_row_view,
				null);
		holder = new ViewHolder();
		holder.txtTextoMensagemEnviada = (TextView) convertView
				.findViewById(R.id.textomensagens);
		holder.txtDataMensagemEnviada = (TextView) convertView
				.findViewById(R.id.dataenviomensagem);
		holder.txtHoraMensagemEnviada = (TextView) convertView
				.findViewById(R.id.horaenviomensagem);

		holder.imagem = (ImageView) convertView
				.findViewById(R.id.imgmensagemlida);			

		convertView.setTag(holder);
	} else {
		holder = (ViewHolder) convertView.getTag();
	}

	holder.txtTextoMensagemEnviada.setText(searchArrayList.get(position)
			.getTitulomensagem());
	holder.txtDataMensagemEnviada.setText(searchArrayList.get(position)
			.getDatamensagem());

// holder.txtHoraMensagemEnviada.setI (searchArrayList.get(position)
// .getImg());
//
// if (mensagensLidas() == true) {
// Log.i(“AZCliente”, “Passou aqui…”);
// holder.imagem.setImageResource(R.drawable.mensagemnova);
// } else {
// holder.imagem.setImageResource(R.drawable.mensagemlida);
// }

	return convertView;
}

static class ViewHolder {
	TextView txtTextoMensagemEnviada;
	TextView txtDataMensagemEnviada;
	TextView txtHoraMensagemEnviada;
	ImageView imagem;
}

// public boolean mensagensLidas() {
// boolean retorno = false;
// DSRESTConnection conn = gc.getConnection();
// TServerMethods1 serv = new TServerMethods1(conn);
// TDataSet ds;
// // ---------------------------------------
// try {
// ds = serv.MensagensAZClienteLidas(AZClienteActivity.login
// .toString().trim());
// while (ds.next()) {
//
// String retornoValor = ds.getValue(“RETORNO”)
// .GetAsString();
//
// if (retornoValor.equals(“Sim”)){
// retorno = true;
// } else {
// retorno = false;
// }
// }
//
// } catch (Exception e) {
// e.printStackTrace();
// }
// return retorno;
// }
}[/code]

Alguém pode dizer uma forma de fazer o que preciso?

Obrigado.

É exatamente no adapter como voce deixou comentado, não está funcionando?

Então Marky.Vasconcelos, fiz a classe aqui assim

[code]package br.com.azsolucoes.azcliente.carregadados;

import java.util.ArrayList;

import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import br.com.azsolucoes.azcliente.R;
import br.com.azsolucoes.azcliente.activities.AZClienteActivity;
import br.com.azsolucoes.azcliente.embarcadero.DSProxy.TServerMethods1;
import br.com.azsolucoes.azcliente.embarcadero.DSRESTConnection;
import br.com.azsolucoes.azcliente.embarcadero.TDataSet;
import br.com.azsolucoes.azcliente.pojo.Mensagens;

public class MensagensBaseAdapter extends BaseAdapter {

private GetConnection gc = new GetConnection();		
private static ArrayList<Mensagens> searchArrayList;
private LayoutInflater mInflater;

public MensagensBaseAdapter(Context context, ArrayList<Mensagens> results) {
	searchArrayList = results;
	mInflater = LayoutInflater.from(context);
}

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

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

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

public View getView(int position, View convertView, ViewGroup parent) {
	ViewHolder holder;

	if (convertView == null) {
		convertView = mInflater.inflate(R.layout.custom_mensagens_row_view,
				null);
		holder = new ViewHolder();
		holder.txtTextoMensagemEnviada = (TextView) convertView
				.findViewById(R.id.textomensagens);
		holder.txtDataMensagemEnviada = (TextView) convertView
				.findViewById(R.id.dataenviomensagem);			
		
		holder.imagem = (ImageView) convertView
				.findViewById(R.id.imgmensagemlida);			

		convertView.setTag(holder);
	} else {
		holder = (ViewHolder) convertView.getTag();
	}

	holder.txtTextoMensagemEnviada.setText(searchArrayList.get(position)
			.getTitulomensagem());
	holder.txtDataMensagemEnviada.setText(searchArrayList.get(position)
			.getDatamensagem());		
	
	if (mensagensLidas() == true) {
		Log.i("AZCliente", "Passou aqui...");
		holder.imagem.setImageResource(R.drawable.mensagemnova);
	} else {
		holder.imagem.setImageResource(R.drawable.mensagemlida);
		Log.i("AZCliente", "Passou aqui imagem lida...");
	}
	return convertView;
}

static class ViewHolder {
	TextView txtTextoMensagemEnviada;
	TextView txtDataMensagemEnviada;
	TextView txtHoraMensagemEnviada;
	ImageView imagem;
}

public boolean mensagensLidas() {
	boolean retorno = false;		
	DSRESTConnection conn = gc.getConnection();
	TServerMethods1 serv = new TServerMethods1(conn);
	TDataSet ds;
	// ---------------------------------------
	try {
		ds = serv.MensagensAZClienteLidas(AZClienteActivity.login
				.toString().trim());			
				
		while (ds.next()) {	
			String retornoValor = ds.getValue("RETORNO")
					.GetAsString().trim();
			
			Log.i("AZCliente", retornoValor);	
			
			if (retornoValor.equals("Não")){
				retorno = true;					
			} else {
				retorno = false;
			}				
		}

	} catch (Exception e) {
		e.printStackTrace();
	}
	return retorno;
}

}
[/code]

Mais no logcat ja descobri porque não da certo

Pois esta passando todos de uma só vez toda vez que passa por este método.
Ai o result é
Não
Sim
Sim

Só que precisaria que passase um de cada vez para conseguir fazer o método de mudança de imagem funcionar.

E não sei uma forma de fazer isso.

Obrigado.

Alias, seu método mensagensLidas() retorna de toda a lista, voce não deveria verificar se só o objeto da linha que foi lido ou não?

[quote=Marky.Vasconcelos]Alias, seu método mensagensLidas() retorna de toda a lista, voce não deveria verificar se só o objeto da linha que foi lido ou não?[/quote]Sim é isso que estou tentando fazer, mais não estou conseguindo, teria que verificar uma a um na lista e não todos de uma só vez.

Este método que fiz retorna o valor de um banco de dados atravez de um select
Feito em delphi para um WS

function TServerMethods1.MensagensAZClienteLidas(Codigo: string): TDataSet; begin with CDS_Tabelas do begin Close; CommandText := ' SELECT '+ ' CASE '+ ' WHEN (AZ_CLIENTE_MENSAGENS_LIDAS.CODIGO) IS NULL THEN '+ ' ''Não'' '+ ' ELSE '+ ' ''Sim'' '+ ' END RETORNO, '+ ' AZ_CLIENTE_MENSAGENS.DATA_HORA '+ ' FROM AZ_CLIENTE_MENSAGENS '+ ' LEFT JOIN AZ_CLIENTE_MENSAGENS_LIDAS '+ ' ON AZ_CLIENTE_MENSAGENS.CODIGO = AZ_CLIENTE_MENSAGENS_LIDAS.CODIGO '+ ' WHERE CAST(AZ_CLIENTE_MENSAGENS.CLIENTE AS VARCHAR(30)) = '+QuotedStr(Codigo) + ' AND AZ_CLIENTE_MENSAGENS.TIPO = ''Enviada'' '+ // ' AND AZ_CLIENTE_MENSAGENS_LIDAS.CODIGO IS NULL '+ ' ORDER BY 2 DESC '; Open; Result := CDS_Tabelas; end; end;

E executado no metodo em java aqui

[code]private DSRESTParameterMetaData[] TServerMethods1_MensagensAZClienteLidas_Metadata;

	private DSRESTParameterMetaData[] get_TServerMethods1_MensagensAZClienteLidas_Metadata() {
		if (TServerMethods1_MensagensAZClienteLidas_Metadata == null) {
			TServerMethods1_MensagensAZClienteLidas_Metadata = new DSRESTParameterMetaData[] {
					new DSRESTParameterMetaData("Codigo",
							DSRESTParamDirection.Input,
							DBXDataTypes.WideStringType, "string"),
					new DSRESTParameterMetaData("",
							DSRESTParamDirection.ReturnValue,
							DBXDataTypes.TableType, "TDataSet"), };
		}
		return TServerMethods1_MensagensAZClienteLidas_Metadata;
	}

	/**
	 * @param Codigo
	 *            [in] - Type on server: string
	 * @return result - Type on server: TDataSet
	 */
	public TDataSet MensagensAZClienteLidas(String Codigo)
			throws DBXException {
		DSRESTCommand cmd = getConnection().CreateCommand();
		cmd.setRequestType(DSHTTPRequestType.GET);
		cmd.setText("TServerMethods1.MensagensAZClienteLidas");
		cmd.prepare(get_TServerMethods1_MensagensAZClienteLidas_Metadata());
		cmd.getParameter(0).getValue().SetAsString(Codigo);
		getConnection().execute(cmd);
		return (TDataSet) cmd.getParameter(1).getValue().GetAsTable();
	}[/code]

Meu problema é passar um a um na lista para popular a imagem de envelope correto.

Alguma dica?

Muito obrigado.

Esse boolean deveria ser um campo do seu modelo e seu códigod everia ser:

holder.txtTextoMensagemEnviada.setText(searchArrayList.get(position)  
                .getTitulomensagem());  
        holder.txtDataMensagemEnviada.setText(searchArrayList.get(position)  
                .getDatamensagem());          
          
        if (searchArrayList.get(position).isMensagemLidas() == true) {  
            Log.i("AZCliente", "Passou aqui...");  
            holder.imagem.setImageResource(R.drawable.mensagemnova);  
        } else {  
            holder.imagem.setImageResource(R.drawable.mensagemlida);  
            Log.i("AZCliente", "Passou aqui imagem lida...");  
        }  

Continua o mesmo problema

Com as mudanças coloquei o método em

[code]package br.com.azsolucoes.azcliente.pojo;

import android.util.Log;
import br.com.azsolucoes.azcliente.activities.AZClienteActivity;
import br.com.azsolucoes.azcliente.carregadados.GetConnection;
import br.com.azsolucoes.azcliente.embarcadero.DSRESTConnection;
import br.com.azsolucoes.azcliente.embarcadero.TDataSet;
import br.com.azsolucoes.azcliente.embarcadero.DSProxy.TServerMethods1;

public class Mensagens {
private GetConnection gc = new GetConnection();

private String titulomensagem;
private String datamensagem;

public String getTitulomensagem() {
	return titulomensagem;
}
public void setTitulomensagem(String titulomensagem) {
	this.titulomensagem = titulomensagem;
}
public String getDatamensagem() {
	return datamensagem;
}
public void setDatamensagem(String datamensagem) {
	this.datamensagem = datamensagem;
}

public boolean isMensagensLidas() {		
	boolean retorno = false;		
	DSRESTConnection conn = gc.getConnection();
	TServerMethods1 serv = new TServerMethods1(conn);
	TDataSet ds;
	// ---------------------------------------
	try {
		ds = serv.MensagensAZClienteLidas(AZClienteActivity.login
				.toString().trim());			
				
		while (ds.next()) {	
			String retornoValor = ds.getValue("RETORNO")
					.GetAsString().trim();
			
			Log.i("AZCliente", retornoValor);	
			
			if (retornoValor.equals("Não")){
				retorno = true;					
			} else {
				retorno = false;
			}				
		}

	} catch (Exception e) {
		e.printStackTrace();
	}
	return retorno;
}

}[/code]

e a classe ficou assim

[code]
import java.util.ArrayList;

import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import br.com.azsolucoes.azcliente.R;
import br.com.azsolucoes.azcliente.activities.AZClienteActivity;
import br.com.azsolucoes.azcliente.embarcadero.DSProxy.TServerMethods1;
import br.com.azsolucoes.azcliente.embarcadero.DSProxy.TServerMethods1.GetAceitaDesconto_ProdutoReturns;
import br.com.azsolucoes.azcliente.embarcadero.DSProxy.TServerMethods1.GetMensagensAZClienteLidasReturns;
import br.com.azsolucoes.azcliente.embarcadero.DSRESTConnection;
import br.com.azsolucoes.azcliente.embarcadero.TDataSet;
import br.com.azsolucoes.azcliente.pojo.Mensagens;

public class MensagensBaseAdapter extends BaseAdapter {

private GetConnection gc = new GetConnection();		
private static ArrayList<Mensagens> searchArrayList;
private LayoutInflater mInflater;

public MensagensBaseAdapter(Context context, ArrayList<Mensagens> results) {
	searchArrayList = results;
	mInflater = LayoutInflater.from(context);
}

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

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

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

public View getView(int position, View convertView, ViewGroup parent) {
	ViewHolder holder;

	if (convertView == null) {
		convertView = mInflater.inflate(R.layout.custom_mensagens_row_view,
				null);
		holder = new ViewHolder();
		holder.txtTextoMensagemEnviada = (TextView) convertView
				.findViewById(R.id.textomensagens);
		holder.txtDataMensagemEnviada = (TextView) convertView
				.findViewById(R.id.dataenviomensagem);			
		
		holder.imagem = (ImageView) convertView
				.findViewById(R.id.imgmensagemlida);			

		convertView.setTag(holder);
	} else {
		holder = (ViewHolder) convertView.getTag();
	}

	holder.txtTextoMensagemEnviada.setText(searchArrayList.get(position)
			.getTitulomensagem());
	holder.txtDataMensagemEnviada.setText(searchArrayList.get(position)
			.getDatamensagem());	           
        
    if (searchArrayList.get(position).isMensagensLidas() == true) {    
        Log.i("AZCliente", "Passou aqui...");    
        holder.imagem.setImageResource(R.drawable.mensagemnova);    
    } else {    
        holder.imagem.setImageResource(R.drawable.mensagemlida);    
        Log.i("AZCliente", "Passou aqui imagem lida...");    
    }    		
	
	return convertView;
}

static class ViewHolder {
	TextView txtTextoMensagemEnviada;
	TextView txtDataMensagemEnviada;
	TextView txtHoraMensagemEnviada;
	ImageView imagem;
}

}[/code]

Mais o problema perciste Marky.Vasconcelos.

Não sei se é porque o select retorna assim

Ou seja toda vez que chama o método isMensagemLidas()

Vai retornar os 3 resultado do select de uma só vez.

Teria que passar no primeiro e mostrar a imagem referente ao retorno do primeiro, depois ir para o proximo e mostrar a imagem, assim por diante, mais da forma que esta mostra tudo ao mesmo tempo por isso aparece somente a segunda imagem, porque no final do select é “Sim”

Teria que fazer um loop e ir populando as imagens, mais como fazer isso?

Obrigado.

Novamente, por que voce percorreu a lista no modelo?

Voce precisa popular um valor quando for criar ele.

[quote=Marky.Vasconcelos]Novamente, por que voce percorreu a lista no modelo?

Voce precisa popular um valor quando for criar ele.[/quote]Acho que não estou entendendo então…Pode mostrar um exemplo então?

No seu model:

public class Mensagens {  
    
    private String titulomensagem;  
    private String datamensagem;  
private boolean mensagensLidas;
      
    public String getTitulomensagem() {  
        return titulomensagem;  
    }  
    public void setTitulomensagem(String titulomensagem) {  
        this.titulomensagem = titulomensagem;  
    }  
    public String getDatamensagem() {  
        return datamensagem;  
    }  
    public void setDatamensagem(String datamensagem) {  
        this.datamensagem = datamensagem;  
    }  
      
public void setMensagensLidas(boolean isLidas){
mensagensLidas = isLidas;
}
    public boolean isMensagensLidas() {       
         return mensagensLidas;  
    }  
}  

Dai na onde voce controi os objetos da lista voce popula, algoc omo:

List<Mensagem> listarTodasMensagens(){
List<Mensagem> msgs;//new list
while(temProximoRegistro()){
ContentRow registro = proximoRegistro();
//Seta os valores no objeto baseado na linha do banco
Mensagem obj = new Mensagem();
obj.setMensagensLidas(registro.isLida());
obj.setText(obj.text());
msgs.add(obj);
}
}
return msgs;
}

Então quando for exibido o valor já está correto.