Listview adicionar além do Item mais 3 subitem? [RESOLVIDO]

Bom dia, como faço para incluir 4 linhas no listview? (Adicionar novos subitens)

Atualmente tenho esta classe que trago as informação do banco de dados mais em duas linhas

[code]public class ListaClientesActivity extends Activity {

private ProgressDialog dialog;
private Handler handler = new Handler();
private ListView listItens;
private Button btnClose;
protected ProgressDialog progressDialog = null;
private List<HashMap<String, String>> dataList = new ArrayList<HashMap<String, String>>();
static GetConnection gc = new GetConnection();

@Override
public void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);

	this.requestWindowFeature(Window.FEATURE_NO_TITLE);
	this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
	this.getWindow().clearFlags(
			WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
	setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

	setContentView(R.layout.lista_clientes);

	btnClose = (Button) findViewById(R.id.btnClose);
	btnClose.setOnClickListener(new View.OnClickListener() {
		public void onClick(View arg0) {
			finish();
		}
	});

	listItens = (ListView) findViewById(R.id.listaClientes);
	
	pesquisarClientes();

	listItens.setOnItemClickListener(new OnItemClickListener() {
		@Override
		public void onItemClick(AdapterView<?> a, View v, int position,
				long id) {
			TextView codigo = (TextView) v.findViewById(android.R.id.text2);

			TextView nome = (TextView) v.findViewById(android.R.id.text1);

			String concatenaCodigoNome = codigo.getText().toString()
					+ " - " + nome.getText().toString();

			String idCharCod = codigo.getText().toString();
			String[] idNumCli = idCharCod.split("-");

			// parametro = 0 significa 'Não', 1 significa 'Sim'
			if (VendaClienteActivity.parametroBLOQUEIA_CLIENTE_S_REG_ENTR() == 1) {
				// ai verifica se o cliente tem registro do entrada
				if (verificaIDCliente(idNumCli[0]) != Integer
						.parseInt(idNumCli[0])) {
					Toast.makeText(ListaClientesActivity.this,
							"Cliente sem registro de entrada.",
							Toast.LENGTH_LONG).show();
					// permanece no mesmo focus
					VendaClienteActivity.edtCliente.setText("");
					VendaClienteActivity.edtCliente
							.setFocusableInTouchMode(true);
					VendaClienteActivity.edtCliente.requestFocus();
					finish();
				} else {
					mudaFocusCliente(concatenaCodigoNome);					
				}
				//fora do bloco	
			} else {
				mudaFocusCliente(concatenaCodigoNome);
			}

		}
	});
}

private void mudaFocusCliente(String concatenar) {
	if (concatenar.length() > 0) {
		VendaClienteActivity.edtCliente.setText(concatenar);
		VendaClienteActivity.edtProfissional.setFocusableInTouchMode(true);
		VendaClienteActivity.edtProfissional.requestFocus();
		VendaClienteActivity.btTelaLetras.setEnabled(true);
		VendaClienteActivity.edtCliente.clearFocus();
		VendaClienteActivity.edtCliente.setFocusableInTouchMode(false);
		finish();
	}
}

public int verificaIDCliente(String codCli) {
	int codigoCliente = 0; // por default inializa com zero
	DSRESTConnection conn = gc.getConnection();
	TServerMethods1 serv = new TServerMethods1(conn);

	try {
		Retorna_IdClie_Reg_EntradaReturns ret;

		String idCli = codCli;
		ret = serv.Retorna_IdClie_Reg_Entrada(idCli);

		codigoCliente = ret.Codigo_Cliente;
	} catch (Exception e) {

	}
	return codigoCliente;
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
	getMenuInflater().inflate(R.menu.lista_clientes, menu);
	return true;
}		

private void pesquisarClientes() {
    dialog = ProgressDialog.show(this, "Aguarde...",
            "Pesquisando registros.", false, true);
    dialog.setIcon(R.drawable.ic_launcher);
    dialog.setCancelable(false);

    DSRESTConnection conn = gc.getConnection();
    final TServerMethods1 serv = new TServerMethods1(conn);
    
   
    new AsyncTask<Void, Void, Void>() {    
       
        @Override  
        protected Void doInBackground(Void... params) {  
            try { 
            	TDataSet ds;
        		// limpa a lista a cada pesquisa
        		dataList.clear();

               
            	ds = serv
						.ConsultaDadosCliente(VendaClienteActivity.edtCliente
								.getText().toString());
				while (ds.next()) {
					HashMap<String, String> item = new HashMap<String, String>();
					item.put("nome", ds.getValue("NOME").GetAsString());
					item.put("id", ds.getValue("CODIGO").GetAsString());
					dataList.add(item);
				}
				// desabilita o dialog
				dialog.dismiss();
				finalizaDialogo(false, "");

// if(dataList.isEmpty()){
// Toast.makeText(ListaClientesActivity.this,
// “Nada encontrado”, Toast.LENGTH_LONG).show();
// }

			} catch (Exception e) {// desabilita o dialog
				dialog.dismiss();
				finalizaDialogo(true, e.toString());
			}
            return null;  
        }  
    }.execute();
}


private void finalizaDialogo(final boolean temErro, final String msg) {
	handler.post(new Runnable() {

		@Override
		public void run() {
			if (temErro)
				Toast.makeText(ListaClientesActivity.this, msg,
						Toast.LENGTH_LONG).show();
			else
				AtualizarTela();
			// finaliar o dialogo
			dialog.dismiss();
		}
	});
}

private void AtualizarTela() {
	String[] from = new String[] { "nome", "id" };
	int[] to = new int[] { android.R.id.text1, android.R.id.text2 };
	int layoutNativo = android.R.layout.two_line_list_item;

	listItens.setAdapter(new SimpleAdapter(this, dataList, layoutNativo,
			from, to));

}	[/code]

Preciso de um listview que me mostre dados da minha tabelas só que 4 linhas pois terá mais informações vindas da tabela, por isso esta necessidade.

Obrigado.

Opa cara tudo bem?

Então, quando preciso fazer esse tipo de operação eu costumo criar um layout para a listView com os TextView e depois implemento isso em um Adapter.
Acho que fica mais fácil para manipular os dados na tela.

Da uma bizucada aqui

Ola, então com este meu codigo ai não tem jeito não?

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

<LinearLayout
    android:id="@+id/layoutCabecalho"
    android:layout_width="match_parent"
    android:layout_height="40dp"
    android:background="@drawable/barra"
    android:gravity="center" >

    <Button
        android:id="@+id/btnClose"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Cancelar"
        android:textSize="14sp" />

    <LinearLayout
        android:id="@+id/layoutCabecalhoEsquerdo"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center_vertical|left" >
    </LinearLayout>

    <LinearLayout
        android:id="@+id/layoutCabecalhoCentro"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_weight="3"
        android:gravity="center" >

        <TextView
            android:id="@+id/textoTitulo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Listagem"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textColor="#FFFFFF" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/layoutCabecalhoDireito"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center_vertical|right" >
    </LinearLayout>
</LinearLayout>

<ListView
    android:id="@+id/listaPacotes"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >
</ListView>

[/code]

Ta dificil de eu fazer de outra forma aqui, não estou conseguindo. Queria ver se ha possiblidades de um multi-linha neste textview pra trazer o restante das informações.

Obrigado

Então cara, estou sem a IDE agora, mas vou tentar te explicar.
O que você vai fazer é o seguinte:

1º Criar um layout (Android XML Layout File) e nele definir como você quer que seja a row do seu listView.
2º Criar uma class que estenda BaseAdapter e nela você vai instanciar e atribuir os valores aos componentes definidos no layout da row.
3º Feito isso você vai criar sua Activity normalmente, e no layout dela você adiciona uma listView. No class dela você vai instanciar a listView, vai instanciar o Adapter (Classe criada anteriormente) e depois vai pegar a instancia desse adapter e jogar no método setAdapter da listView.

Se você olhar o link que mandei anteriormente vai ver que ele faz exatamente isso.
Belezera??

Então pessoal estou seguindo este exemplo aqui
http://geekswithblogs.net/bosuch/archive/2011/01/31/android---create-a-custom-multi-line-listview-bound-to-an.aspx

Quase deu certo, mais meu while não esta trazendo corretamente.

Ta trazendo apenas o ultimo registro da tabela
Olhem o código

[code]public class ListViewBlogPost extends Activity {

private GetConnection gc = new GetConnection();	

@Override
public void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	
	this.requestWindowFeature(Window.FEATURE_NO_TITLE);
	this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
	this.getWindow().clearFlags(
			WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
	setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
	
	setContentView(R.layout.main);

	ArrayList<SearchResults> searchResults = GetSearchResults();

	final ListView lv1 = (ListView) findViewById(R.id.ListView01);
	lv1.setAdapter(new MyCustomBaseAdapter(this, searchResults));

	lv1.setOnItemClickListener(new OnItemClickListener() {
		@Override
		public void onItemClick(AdapterView<?> a, View v, int position,
				long id) {
			Object o = lv1.getItemAtPosition(position);
			SearchResults fullObject = (SearchResults) o;
			Toast.makeText(ListViewBlogPost.this,
					"Clicou em: " + " " + fullObject.getName(),
					Toast.LENGTH_LONG).show();
		}
	});
}

private ArrayList<SearchResults> GetSearchResults() {
	ArrayList<SearchResults> results = new ArrayList<SearchResults>();
	DSRESTConnection conn = gc.getConnection();
	TServerMethods1 serv = new TServerMethods1(conn);
	TDataSet ds;
	try {
		ds = serv.ConsultaDadosPacote("1000","4" );//idNumCli[0], idNumPro[0]);

		SearchResults sr1 = new SearchResults();

		while (ds.next()) {
			
			String concPacote = ds.getValue("CODIGO_PACOTE").toString() + " - "
					+ ds.getValue("NOME_PACOTE").toString();
			String concSessao = "Sessão: "
					+ ds.getValue("CODIGO_SERVICO").toString() + " - "
					+ ds.getValue("NOME_SERVICO").toString();
			String concCreditos = "Créditos restantes: "
					+ ds.getValue("CREDITOS_RESTANTES").toString();
			String concStatus = "Status: " + ds.getValue("STATUS").toString();
			String concHabilidade = "Habilidade: "
					+ ds.getValue("HABILIDADE").toString() + " - "
					+ ds.getValue("CODIGO_COMPRA").toString();
			sr1.setName(concPacote);
			sr1.setCityState(concSessao);
			sr1.setPhone(concCreditos);
			results.add(sr1);
		}
	} catch (Exception e) {
		e.printStackTrace();
	}
	return results;
}

}[/code]

Sei que o problema é aqui neste método private ArrayList GetSearchResults() , porque no exemplo ele vem sendo populado linha a linha

[code]private ArrayList GetSearchResults(){
ArrayList results = new ArrayList();
SearchResults sr1 = new SearchResults();

	sr1.setName("John Smith");
	sr1.setCityState("Dallas, TX");
	sr1.setPhone("214-555-1234");
	results.add(sr1);
	
	sr1 = new SearchResults();
	sr1.setName("Jane Doe");
	sr1.setCityState("Atlanta, GA");
	sr1.setPhone("469-555-2587");
	results.add(sr1);
	
	sr1 = new SearchResults();
	sr1.setName("Steve Young");
	sr1.setCityState("Miami, FL");
	sr1.setPhone("305-555-7895");
	results.add(sr1);
	
	sr1 = new SearchResults();
	sr1.setName("Fred Jones");
	sr1.setCityState("Las Vegas, NV");
	sr1.setPhone("612-555-1234");
	results.add(sr1);
	
	sr1 = new SearchResults();
	sr1.setName("Bob Marsh");
	sr1.setCityState("New York, NY");
	sr1.setPhone("612-555-5678");
	results.add(sr1);
	
	sr1 = new SearchResults();
	sr1.setName("Harold Funk");
	sr1.setCityState("Chicago, IL");
	sr1.setPhone("612-555-8765");
	results.add(sr1);
	
	sr1 = new SearchResults();
	sr1.setName("Scott Dorf");
	sr1.setCityState("Winslow, AZ");
	sr1.setPhone("612-555-5432");
	results.add(sr1);
	
	sr1 = new SearchResults();
	sr1.setName("Mike Hail");
	sr1.setCityState("Seattle, WA");
	sr1.setPhone("612-555-0961");
	results.add(sr1);
	
	return results;
}[/code]

Mais como eu faria para trazer isso direto da minha tabela? Pois no meu caso não sei quantos resultados podem vir, diferente da forma que o exemplo ai mostra que esta tudo fixo.

Tentei assim também

[code]protected void Refresh() {
DSRESTConnection conn = gc.getConnection();
TServerMethods1 serv = new TServerMethods1(conn);
TDataSet ds;
try {
dataList.clear();
String idCharCodCli = VendaClienteActivity.edtCliente.getText()
.toString();
String[] idNumCli = idCharCodCli.split("-");
String idCharCodPro = VendaClienteActivity.edtProfissional
.getText().toString();
String[] idNumPro = idCharCodPro.split("-");
ds = serv.ConsultaDadosPacote(idNumCli[0], idNumPro[0]);
ArrayList PACOTES = new ArrayList();

        while (ds.next()) {
           
            String concPacote = ds.getValue("CODIGO_PACOTE").toString() + " - "  
                    + ds.getValue("NOME_PACOTE").toString();  
            String concSessao = "Sessão: "  
                    + ds.getValue("CODIGO_SERVICO").toString() + " - "  
                    + ds.getValue("NOME_SERVICO").toString();  
            String concCreditos = "Créditos restantes: "  
                    + ds.getValue("CREDITOS_RESTANTES").toString();  
            String concStatus = "Status: " + ds.getValue("STATUS").toString();  
            String concHabilidade = "Habilidade: "  
                    + ds.getValue("HABILIDADE").toString() + " - "  
                    + ds.getValue("CODIGO_COMPRA").toString();
                           
            PACOTES.add(concPacote);
            PACOTES.add(concSessao);
            PACOTES.add(concCreditos);
            PACOTES.add(concStatus);
            PACOTES.add(concHabilidade);
        }          
        listItens.setAdapter((ListAdapter) new ArrayAdapter(this,
                android.R.layout.simple_list_item_1, PACOTES));

    } catch (Exception e) {// desabilita o dialog
        dialog.dismiss();
        finalizaDialogo(true, e.toString());
    }

}[/code]

Mais ai dividi as linhas no ADD, tem como dividir a linha só depois de incluir estes 5 itens ?

Não sei mais como fazer isso, segui passo a passo os exemplos que encontrei na net e nada de trazer meus dados corretamente na lista.

Segue como fiz
A classe activity

[code]public class ListaPacoteActivity extends ListActivity {

private GetConnection gc = new GetConnection();
private Context pacoteList;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    this.getWindow().clearFlags(
            WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

    List<Pacotes> pacoteList = new ArrayList<Pacotes>();

    DSRESTConnection conn = gc.getConnection();
    TServerMethods1 serv = new TServerMethods1(conn);
    TDataSet ds;
    // String idCharCodCli = VendaClienteActivity.edtCliente.getText()
    // .toString();
    // String[] idNumCli = idCharCodCli.split("-");
    // String idCharCodPro = VendaClienteActivity.edtProfissional.getText()
    // .toString();
    // String[] idNumPro = idCharCodPro.split("-");
    try {
        ds = serv.ConsultaDadosPacote("1000", "4");// idNumCli[0],
                                                    // idNumPro[0]);
        Pacotes pct = new Pacotes();

        while (ds.next()) {
            String concPacote = ds.getValue("CODIGO_PACOTE").toString()
                    + " - " + ds.getValue("NOME_PACOTE").toString();
            String concSessao = "Sessão: "
                    + ds.getValue("CODIGO_SERVICO").toString() + " - "
                    + ds.getValue("NOME_SERVICO").toString();
            String concCreditos = "Créditos restantes: "
                    + ds.getValue("CREDITOS_RESTANTES").toString();
            String concStatus = "Status: "
                    + ds.getValue("STATUS").toString();
            String concHabilidade = "Habilidade: "
                    + ds.getValue("HABILIDADE").toString() + " - "
                    + ds.getValue("CODIGO_COMPRA").toString();
            pct.setPacote(concPacote);
            pct.setSessao(concSessao);
            pct.setCreditos(concCreditos);
            pct.setStatus(concStatus);
            pct.setHabilidade(concHabilidade);
            // adiciona os dados no list
            pacoteList.add(pct);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    setListAdapter(new PacoteAdapter(getBaseContext(), pacoteList));
}

}
[/code]

A classe pojo

public class Pacotes { private String pacote = ""; private String sessao = ""; private String creditos = ""; private String status = ""; private String habilidade = ""; public String getPacote() { return pacote; } public void setPacote(String pacote) { this.pacote = pacote; } public String getSessao() { return sessao; } public void setSessao(String sessao) { this.sessao = sessao; } public String getCreditos() { return creditos; } public void setCreditos(String creditos) { this.creditos = creditos; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public String getHabilidade() { return habilidade; } public void setHabilidade(String habilidade) { this.habilidade = habilidade; } }

a classe adapter

[code]public class PacoteAdapter extends BaseAdapter {
private Context context;
private List pacoteList;

public PacoteAdapter(Context context, List<Pacotes> pacotelist){
    this.context = context;
    this.pacoteList = pacotelist;
}

@Override
public int getCount() {
    return pacoteList.size();
}

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

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // Recupera o pacote da posição atual
    Pacotes pct = (Pacotes) getItem(position);  

    // Cria uma instância do layout XML para os objetos correspondentes
    // na View
    LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    View view = inflater.inflate(R.layout.custom_row_view, null);
    // pacote
    TextView textPacote = (TextView) view.findViewById(R.id.pacote);
    textPacote.setText(pct.getPacote());
    //sessão
    TextView textSessao = (TextView) view.findViewById(R.id.sessao);
    textSessao.setText(pct.getSessao());
    //creditos
    TextView textCredito = (TextView) view.findViewById(R.id.credito);
    textCredito.setText(pct.getPacote());
    //status
    TextView textStatus = (TextView) view.findViewById(R.id.status);
    textStatus.setText(pct.getStatus());
    //habilidade
    TextView textHabilidade = (TextView) view.findViewById(R.id.habilidade);
    textHabilidade.setText(pct.getHabilidade());
    
    return view;
}   

}[/code]

O xml

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

<TextView
    android:id="@+id/pacote"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="#0000FF"
    android:textSize="14sp"
    android:textStyle="bold" />

<TextView
    android:id="@+id/sessao"
    android:textColor="#228B22"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

<TextView
    android:id="@+id/credito"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

<TextView
    android:id="@+id/status"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

<TextView
    android:id="@+id/habilidade"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

[/code]

Alguem pode me ajudar?

Obrigado.

pessoal, ja me contentaria se eu conseguisse ao menos quebrar a linhas neste aqui

[code]protected void Refresh() {
DSRESTConnection conn = gc.getConnection();
TServerMethods1 serv = new TServerMethods1(conn);
TDataSet ds;
try {
dataList.clear();
String idCharCodCli = VendaClienteActivity.edtCliente.getText()
.toString();
String[] idNumCli = idCharCodCli.split("-");
String idCharCodPro = VendaClienteActivity.edtProfissional
.getText().toString();
String[] idNumPro = idCharCodPro.split("-");
ds = serv.ConsultaDadosPacote(idNumCli[0], idNumPro[0]);

		ArrayList<String> PACOTES = new ArrayList<String>();

		while (ds.next()) {

			String concPacote = ds.getValue("CODIGO_PACOTE").GetAsString()
					+ " - " + ds.getValue("NOME_PACOTE").GetAsString();
			String concSessao = "Sessão: "
					+ ds.getValue("CODIGO_SERVICO").GetAsString() + " - "
					+ ds.getValue("NOME_SERVICO").GetAsString();
			String concCreditos = "Créditos restantes: "
					+ ds.getValue("CREDITOS_RESTANTES").GetAsString();
			String concStatus = "Status: "
					+ ds.getValue("STATUS").GetAsString();
			String concHabilidade = "Habilidade: "
					+ ds.getValue("HABILIDADE").GetAsString() + " - "
					+ ds.getValue("CODIGO_COMPRA").GetAsString();

			PACOTES.add(concPacote + " " + concSessao + " " + concCreditos
					+ " " + concStatus + " " + concHabilidade);
		}
		listItens.setAdapter((ListAdapter) new ArrayAdapter(this,
				android.R.layout.simple_list_item_1, PACOTES));

	} catch (Exception e) {// desabilita o dialog
		dialog.dismiss();
		finalizaDialogo(true, e.toString());
	}

}[/code]

Nesta parte aqui

PACOTES.add(concPacote + " " + concSessao + " " + concCreditos + " " + concStatus + " " + concHabilidade); No lugar do espaço, quebar a linha pra baixo, assim consigo dividir da forma que eu preciso, ja que da outra forma não consegui trazer da forma que eu preciso, pois só esta trazendo o ultimo registro no listview.

E aprovietando, se tiver como quebar estas linhas ai, como faço para pegar só o que esta aqui na concSessao?

Tentei assim, mais também só pega o ultimo registro

[code]listItens.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int position,
long id) {
// codigo = (TextView) v.findViewById(android.R.id.text2);
//
// nome = (TextView) v.findViewById(android.R.id.text1);
//
// String concatenaCodigoNome = codigo.getText().toString()
// + " - " + nome.getText().toString();

			String concatenaCodigoNome = concSessao;

			if (concatenaCodigoNome.length() > 0) {
				VendaClienteActivity.edtItem.setText(concatenaCodigoNome);

				VendaClienteActivity.edtQuantidade
						.setFocusableInTouchMode(true);
				VendaClienteActivity.edtQuantidade.requestFocus();
				VendaClienteActivity.btTelaLetras.setEnabled(false);
				VendaClienteActivity.flLetras.setVisibility(View.INVISIBLE);
				VendaClienteActivity.flNumeros.setVisibility(View.VISIBLE);
				VendaClienteActivity.edtItem.clearFocus();
				VendaClienteActivity.edtItem.setFocusableInTouchMode(false);
				finish();
			}
		}
	});
}[/code]

Obrigado

Desculpe insistir pessoal, mais eu não entendo porque aqui neste método

[code]private ArrayList GetSearchResults() {
ArrayList results = new ArrayList();

	DSRESTConnection conn = gc.getConnection();
	TServerMethods1 serv = new TServerMethods1(conn);
	TDataSet ds;

	// String idCharCodCli = VendaClienteActivity.edtCliente.getText()
	// .toString();
	// String[] idNumCli = idCharCodCli.split("-");
	// String idCharCodPro = VendaClienteActivity.edtProfissional.getText()
	// .toString();
	// String[] idNumPro = idCharCodPro.split("-");
	try {

		ds = serv.ConsultaDadosPacote("1000", "4");

		SearchResults sr1 = new SearchResults();

		while (ds.next()) {
			String concPacote = ds.getValue("CODIGO_PACOTE").GetAsString()
					+ " - " + ds.getValue("NOME_PACOTE").GetAsString();
			String concSessao = "Sessão: "
					+ ds.getValue("CODIGO_SERVICO").GetAsString() + " - "
					+ ds.getValue("NOME_SERVICO").GetAsString();
			String concCreditos = "Créditos restantes: "
					+ ds.getValue("CREDITOS_RESTANTES").GetAsString();
			String concStatus = "Status: "
					+ ds.getValue("STATUS").GetAsString();
			String concHabilidade = "Habilidade: "
					+ ds.getValue("HABILIDADE").GetAsString() + " - "
					+ ds.getValue("CODIGO_COMPRA").GetAsString();
			sr1.setPacote(concPacote);
			sr1.setSessao(concSessao);
			sr1.setCreditos(concCreditos);
			sr1.setStatus(concStatus);
			sr1.setHabilidade(concHabilidade);

			results.add(sr1);
		}
	} catch (Exception e) {
		e.printStackTrace();
	}
	return results;
}[/code]

Tenho dois registros um diferente do outro
Se eu debugar, me mostra assim o result

O primeiro result

O segundo result

Porque então quando mostra o list só mostra este ultimo nos dois list que aparece na tela?

Ja mudei este results.add(sr1); para fora do bloco, mais ai mostra só um registro.

Por favor, alguém tem uma idéia do que esta acontecendo neste loop?

Obrigado.

Descobri aqui o que estava fazendo errado

É que eu coloquei esta linha aqui
SearchResults sr1 = new SearchResults();
fora do while.

O correto é assim

[code]private ArrayList GetSearchResults() {
ArrayList results = new ArrayList();

	DSRESTConnection conn = gc.getConnection();
	TServerMethods1 serv = new TServerMethods1(conn);
	TDataSet ds;

	// String idCharCodCli = VendaClienteActivity.edtCliente.getText()
	// .toString();
	// String[] idNumCli = idCharCodCli.split("-");
	// String idCharCodPro = VendaClienteActivity.edtProfissional.getText()
	// .toString();
	// String[] idNumPro = idCharCodPro.split("-");
	try {
		ds = serv.ConsultaDadosPacote("1000", "4");
		while (ds.next()) {
			SearchResults sr1 = new SearchResults();
			String concPacote = ds.getValue("CODIGO_PACOTE").GetAsString()
					+ " - " + ds.getValue("NOME_PACOTE").GetAsString();
			String concSessao = "Sessão: "
					+ ds.getValue("CODIGO_SERVICO").GetAsString() + " - "
					+ ds.getValue("NOME_SERVICO").GetAsString();
			String concCreditos = "Créditos restantes: "
					+ ds.getValue("CREDITOS_RESTANTES").GetAsString();
			String concStatus = "Status: "
					+ ds.getValue("STATUS").GetAsString();
			String concHabilidade = "Habilidade: "
					+ ds.getValue("HABILIDADE").GetAsString() + " - "
					+ ds.getValue("CODIGO_COMPRA").GetAsString();
			sr1.setPacote(concPacote);
			sr1.setSessao(concSessao);
			sr1.setCreditos(concCreditos);
			sr1.setStatus(concStatus);
			sr1.setHabilidade(concHabilidade);
			results.add(sr1);			
		}
		
	} catch (Exception e) {
		e.printStackTrace();
	}
	return results;
}[/code]

Caramba 1 dia e meio pra achar o problema.

Valeu Zenity pela dica de usar textview dentro do listview.

Agora sim esta certo.