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