GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Aplicativo que não está querendo listar cidades

Olá, estava querendo criar uma aplicação android que ao clicar no primeiro ícone o usuário será redirecionado para uma tela de registro, que contém uma lista com o nome das cidades, e ao clicar no segundo ícone o usuário poderá consultar todas as cidades que possuem ocorrência do vírus covid.

As intents deram certo, mas não está listando o nome das cidades. A seguir, todos os códigos de cada classe que criei.

Classe Principal:

public class Principal extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_principal); 

}
    
    public void registrar(View registrar) { // Vai p/ tela registro
		Intent i = new Intent(this,Registrar.class);
		startActivity(i);
	}

	public void consultar(View consultar) {// Vai p/ tela Consulta
		Intent intent = new Intent(this, Consultar.class);
		startActivity(intent);

	}

}

Classe Registrar:

public class Registrar extends Activity implements OnItemClickListener {

private ListView lista1;
private ArrayList<Cidade> lista = new ArrayList<Cidade>();
JSONStringer json = new JSONStringer();

private Cidade cidade;

@Override
protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.activity_registrar);

	lista1 = (ListView) findViewById(R.id.lista1);
	lista1.setOnItemClickListener(this);
}

// Chamar as itents

public void back(View view) { // Voltar
	Intent i = new Intent(this, Principal.class);
	startActivity(i);

}

public void registrar(View view) { // Para registrar
	new ConsultarCidade(this).execute();
	Intent i = new Intent(this, Principal.class);
	startActivity(i);
}

public void onStart() { // Pra q serve: torna a atividade visível ao
						// usuário, à medida que o aplicativo prepara a
						// atividade para inserir o primeiro plano e se
						// tornar interativa
	super.onStart();
	new ConsultarCidade(this).execute();
}

@Override
public void onItemClick(AdapterView<?> parent, View view, int i, long id) {
	JSONStringer j = new JSONStringer();
	try {

		j.object();
		j.key("municipio").value(lista1.getSelectedItem().toString());
		j.endObject();
	} catch (Exception ex) {
		ex.printStackTrace();
	}
	this.json = j;
}

// Converter o JSON para lista
public void converterParaLista(String json) {
	try {
		JSONObject object = (JSONObject) new JSONTokener(json).nextValue();
		JSONArray array = object.getJSONArray("registro");
		ArrayList<Cidade> lista = new ArrayList<Cidade>();
		for (int i = 0; i < array.length(); i++) {
			JSONObject dado = (JSONObject) array.get(i);
			Cidade c = new Cidade(dado.getInt("id"),
					dado.getString("municipio"), dado.getString("uf"));
			lista.add(c);
		}

		ArrayAdapter<Cidade> aa = new ArrayAdapter<Cidade>(this,
				android.R.layout.simple_list_item_1, lista);
		this.lista1.setAdapter(aa);
	} catch (Exception ex) {
	}
}

public void exibirMensagem(String msg) { // Para ter certeza que foi gravado
	Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
}

public String converterParaJSON() {
	lista1
			.setOnItemClickListener(new AdapterView.OnItemClickListener() {
				@Override
				public void onItemClick(AdapterView<?> parent, View view,
						int position, long id) {
					try {
						json.object();
						json.key("municipio").value(
								lista1.getSelectedItem().toString());
						json.endObject();
					} catch (Exception ex) {
					}
				}
			});
	return json.toString();
}

}

Classe Consultar:

public class Consultar extends Activity {

private ListView lista2;// Lista do consultar
private HashMap<String, Cidade> cidade;
private Consultar consultar;

@Override
protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.activity_consultar);

	this.cidade = new HashMap<String, Cidade>();
	lista2 = (ListView) findViewById(R.id.lista2);
}

public void voltar(View view) {
	Intent i = new Intent(this, Principal.class);
	startActivity(i);
}

public void onStart() {
	super.onStart();

	new ConsultarS(this).execute();
}

public void decodeJSON(String valor) {
	try {
		cidade = new HashMap<String, Cidade>();
		JSONObject object = (JSONObject) new JSONTokener(valor).nextValue();
		JSONArray caso = object.getJSONArray("cidade");
		for (int i = 0; i < caso.length(); i++) {
			JSONObject o = (JSONObject) caso.get(i);
			try {
				if (!o.getString("municipio").equals("")) {
					if (cidade.get(o.getString("municipio")) == null) {
						cidade.put(
								o.getString("municipio"),
								new Cidade(o.getInt("id"), o
										.getString("municipio"), 1));
					} else {
						Cidade c = cidade.get(o.getString("municipio"));
						c.setNcasos(c.getNcasos() + 1);
					}
				}
			} catch (Exception ex) {
				// e.printStackTrace();
			}
		}
		CidadeAdapter ca = new CidadeAdapter(this, cidade); // consultar
		this.lista2.setAdapter(ca);
	} catch (Exception ex) {
		ex.printStackTrace();
	}
}

}

Classe Cidade:

public class Cidade {
private int nCasos;
private int id;
private String uf;
private String municipio;

public Cidade(int ncasos, int id, String uf, String municipio) {
	super();
	nCasos = ncasos;
	this.id = id;
	this.uf = uf;
	this.municipio = municipio;

}
public Cidade(int id, int nCasos) {
	super();
	this.id = id;
	this.nCasos = nCasos;
}

public Cidade(int id, String municipio) {
	this.id = id;
	this.municipio = municipio;
}

public Cidade(int id, String municipio, String uf, int nCasos) {
	super();
	this.id = id;
	this.municipio = municipio;
	this.uf = uf;
	this.nCasos = nCasos;
}

public Cidade(int id, String municipio, int nCasos) {
	this.id = id;
	this.municipio = municipio;
	this.nCasos = nCasos;
}

public Cidade(int id, String municipio, String uf) {
	this.id = id;
	this.municipio = municipio;
	this.uf = uf;
}

public int getNcasos() {
	return nCasos;
}

public void setNcasos(int ncasos) {
	nCasos = ncasos;
}

public int getId() {
	return id;
}

public void setId(int id) {
	this.id = id;
}

public String getUf() {
	return uf;
}

public void setUf(String uf) {
	this.uf = uf;
}

public String getMunicipio() {
	return municipio;
}

public void setMunicipio(String municipio) {
	this.municipio = municipio;
}
public String toString(){
	return municipio;
}

}

Classe Cidade Adapter:

public class CidadeAdapter extends BaseAdapter {

private Consultar consultar;
private HashMap<String, Cidade> cidade;

public CidadeAdapter(Consultar consultar, HashMap<String, Cidade> cidade) {
	this.consultar = consultar;
	this.cidade = cidade;
}

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

@Override
public Object getItem(int i) {
	Iterator<Cidade> iterator = cidade.values().iterator();
	int contador = 0;
	while (iterator.hasNext()) {
		Cidade t = iterator.next();
		if (contador == i)
			return t.getId();
		contador++;
	}
	return null;//0
}// public Object getItem(int i) {
	// return this.itens.get(i);

// }

@Override
public long getItemId(int i) {

	Iterator<Cidade> iterator = cidade.values().iterator();
	int contador = 0;
	while (iterator.hasNext()) {
		Object o = iterator.next();
		if (contador == i)
			return i;
		contador++;
	}
	return 0; //contador;
} // return this.cidade.get(i).getId();

@Override
public View getView(int i, View arg1, ViewGroup arg2) {
	Cidade cidades = (Cidade) getItem(i);
	LayoutInflater inflater = this.consultar.getLayoutInflater();
	View view = inflater.inflate(R.layout.activity_item, null);

	TextView municipio = (TextView) view.findViewById(R.id.municipio);
	municipio.setText(cidades.getMunicipio());
	
	TextView cidadescomcasos = (TextView) view.findViewById(R.id.municipio);
	cidadescomcasos.setText("Casos confirmados: " + cidades.getNcasos()
			+ "");
	if (cidades.getNcasos() > 100) {
		cidadescomcasos.setTextColor(Color.rgb(179, 0, 0));
	}
	return  view; //cidadescomcasos;
}

}

Classe Consultar Cidade:

public class ConsultarCidade extends AsyncTask<String, String, String> {

private Registrar registrar;

public ConsultarCidade(Registrar registrar) {
	this.registrar = registrar;
}

public void onPostexecute(String ver) {
	this.registrar.converterParaLista(ver);

}

@Override
protected String doInBackground(String... arg0) {
	try {
		String url = "http://www.eaprendizapp.com.br/ensino/consultarcidade.php";
		HttpGet get = new HttpGet(url);
		HttpClient client = new DefaultHttpClient();
		HttpResponse response = client.execute(get);
		return EntityUtils.toString(response.getEntity());
	} catch (Exception ex) {
		ex.printStackTrace();
		return null;
	}
}

@Override
protected void onPostExecute(String result) {
	this.registrar.converterParaLista(result);
}

}

Classe ConsultarS:

public class ConsultarS extends AsyncTask<String, String, String> {

private Consultar consultar;

public ConsultarS(Consultar consultar) {

}

@Override
protected String doInBackground(String... arg0) {
	try {
		String url = "http://www.eaprendizapp.com.br/ensino/readcorona.php";
		HttpGet get = new HttpGet(url);
		HttpClient client = new DefaultHttpClient();
		HttpResponse response = client.execute(get);
		return EntityUtils.toString(response.getEntity());
	} catch (Exception ex) {
		ex.printStackTrace();
		return null;
	}
}

@Override
protected void onPostExecute(String result) {
	if (result.equals(null)){
		this.consultar.decodeJSON(result);
	}

}

}
Classe RegistrarCasos

public class RegistrarCasos extends AsyncTask<String, String, String> {

private RegistrarCasos Registrar;
private Cidade cidade;

public RegistrarCasos(RegistrarCasos registrar) {
	this.Registrar = registrar;
}

@Override
protected String doInBackground(String... arg0) {
	try {
		String url = "http://www.eaprendizapp.com.br/ensino/writecorona.php";
		URI uri = new URI(url);
		HttpPost post = new HttpPost(uri);
		post.setEntity(new StringEntity(Registrar.converterParaJSON()));
		post.setHeader("Content-type", "application/json");
		HttpClient client = new DefaultHttpClient();
		client.execute(post);
	} catch (Exception ex) {
	}
	return null;
}

public String converterParaJSON() {
	JSONStringer json = new JSONStringer();
	try {
		json.object();
		json.key("cidade").value(cidade.getMunicipio().toString());
		json.key("Uf").value(cidade.getUf().toString());
		json.endObject();
	} catch (Exception ex) {
	}
	;
	return json.toString();
}

protected void onPostExecute(String result) {
	this.Registrar.exibirMensagem("Gravado com sucesso!");
}

private void exibirMensagem(String string) {

}

}

//