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

8 respostas
A

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

	}

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.

8 Respostas

Z

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

A

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

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

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

</LinearLayout>

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

Z

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??

A

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
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;
	}
}
Sei que o problema é aqui neste método private ArrayList GetSearchResults() , porque no exemplo ele vem sendo populado linha a linha
private ArrayList<SearchResults> GetSearchResults(){
    	ArrayList<SearchResults> results = new ArrayList<SearchResults>();    	
    	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;
    }

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

    }

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

A

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

}
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
public class PacoteAdapter extends BaseAdapter {
    private Context context;
    private List<Pacotes> 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;
    }   
}
O xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"   
    android:orientation="vertical" >

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

</LinearLayout>

Alguem pode me ajudar?

Obrigado.

A

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

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

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

Obrigado

A
Desculpe insistir pessoal, mais eu não entendo porque aqui neste método
private ArrayList<SearchResults> GetSearchResults() {
		ArrayList<SearchResults> results = new ArrayList<SearchResults>();

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

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

O primeiro result
[img]http://666kb.com/i/casuv7ru80cxely9x.gif[/img]

O segundo result
[img]http://666kb.com/i/casuwcn1zlcnox03p.gif[/img]

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.

A

Descobri aqui o que estava fazendo errado

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

O correto é assim
private ArrayList<SearchResults> GetSearchResults() {
		ArrayList<SearchResults> results = new ArrayList<SearchResults>();

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

Caramba 1 dia e meio pra achar o problema.

Valeu Zenity pela dica de usar textview dentro do listview.

Agora sim esta certo.

Criado 16 de janeiro de 2013
Ultima resposta 18 de jan. de 2013
Respostas 8
Participantes 2