Mostrar mensagem quando listview não tiver dados?

2 respostas
A

Pessoal mais uma vez estou com duvidas aqui.

Fiz esta classe que traz todos os dados da minha tabela num listview
public class ListaItensProdutosActivity extends Activity {

    private TextView codigo;
    private TextView nome;
    private ProgressDialog dialog;
    private Handler handler = new Handler();
    private ListView listItens;
    protected ProgressDialog progressDialog = null;
    private List<HashMap<String, String>> dataList = new ArrayList<HashMap<String, String>>();

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

        listItens = (ListView) findViewById(R.id.listaItensProdutos);
        buscaItensProdutos();

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

                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);
                    // pesquisa o valor do produto
                    pesquisarValorProduto();
                    VendaClienteActivity.edtItem.clearFocus();
                    VendaClienteActivity.edtItem.setFocusableInTouchMode(false);
                    finish();
                }
            }
        });

    }

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

    // busca parte do cliente
    public void buscaItensProdutos() {
        dialog = ProgressDialog.show(ListaItensProdutosActivity.this,
                "Aguarde...", "Pesquisando registros");

        new Thread() {
            @Override
            public void run() {
                DSRESTConnection conn = getConnection();
                TServerMethods1 serv = new TServerMethods1(conn);

                TDataSet ds;
                // limpa a lista a cada pesquisa
                dataList.clear();
                try {
                    ds = serv.ConsultaItens(VendaClienteActivity.edtItem
                            .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);
                    }                  

                    finalizaDialogo(false, "");

                } catch (Exception e) {
                    finalizaDialogo(true, e.toString());
                }
            }

        }.start();

    }

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

            @Override
            public void run() {
                if (temErro)
                    Toast.makeText(ListaItensProdutosActivity.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));
       
        if (listItens == null) {

            Toast.makeText(ListaItensProdutosActivity.this,
                    "Não foi encontrado dados nesta busca.",
                    Toast.LENGTH_LONG).show();
            finish();

        }

    }

    private DSRESTConnection getConnection() {
        DSRESTConnection conn = new DSRESTConnection();
        conn.setHost(MainActivity.ip);
        String portaServXE = "23" + Integer.toString(MainActivity.porta);
        conn.setPort(Integer.parseInt(portaServXE)); // MainActivity.porta
        return conn;
    }

    private void pesquisarValorProduto() {
        DSRESTConnection conn = getConnection();
        TServerMethods1 serv = new TServerMethods1(conn);

        try {

            GetPrecoVenda_ProdutoReturns ret;

            // Toast.makeText(ListaItensProdutosActivity.this, codigo,
            // Toast.LENGTH_LONG).show();
            ret = serv.GetPrecoVenda_Produto(codigo.getText().toString()); // manda
                                                                            // o
                                                                            // valor
            // do codigo
            // auxiliar para
            // busca no
            // select

            // carrega o edit com o resultado do select
            VendaClienteActivity.tvValorUnitario.setText(String.format(
                    "R$ %.2f", ret.PrecoVenda));

            // recebe o valor unitário
            VendaClienteActivity.vlUnitario = ret.PrecoVenda;
            // o valor total recebe o valor unitário
            VendaClienteActivity.vlValorTotal = ret.PrecoVenda;

            finalizaDialogo(false, "");

        } catch (Exception e) {
            finalizaDialogo(true, e.toString());
        }

    }

}
No androidManifest.xml o thema desta tela é assim
<activity
            android:name=".ListaItensProdutosActivity"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.Dialog" >
        </activity>

Meu problema é quando o retorno desta consulta não tiver dados dentro do listview, como faço para mandar uma mensagem em vez de retornar esta tela vazia?

Obrigado.

2 Respostas

R

debaixo da linha 87 :

if(dataList.isEmpty()){ Toast.makeText(context, "Nada encontrado", Toast.LENGTH_LONG).show(); }
Acredito que seja isso que vc quer.
Dica: use AsyncTask para operações em rede.

A
Ramon Pires:
debaixo da linha 87 :
if(dataList.isEmpty()){
    Toast.makeText(context, "Nada encontrado", Toast.LENGTH_LONG).show();
}
Acredito que seja isso que vc quer. Dica: use AsyncTask para operações em rede.
Ola Ramon Pires, coloquei conforme você disse, mais não funcionou não. Obrigado. Veja como esta agora
private void pesquisarClientes() {
        dialog = ProgressDialog.show(this, "Aguarde...",
                "Pesquisando registros.", false, true);
        dialog.setIcon(R.drawable.ic_launcher);
        dialog.setCancelable(false);

        DSRESTConnection conn = 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();
	}
E não retornou a mensagem que estou querendo que retorna ai.

Obrigado.

Criado 7 de janeiro de 2013
Ultima resposta 11 de jan. de 2013
Respostas 2
Participantes 2