gpt4 book ai didi

java - 如何将 Json 解析为另一个 Activity

转载 作者:行者123 更新时间:2023-12-02 05:34:51 24 4
gpt4 key购买 nike

我有 3 个 Activity 需要 Json 来显示数据,第二个 Activity 根据其 ID 从主 Activity 获取值,我需要将该 Json 传递给每个 Activity ,以便它可以接收数据,如何才能我通过 Intent 将其传递给另一项 Activity ?我对android开发非常陌生,我读过一些与此案例相关的问题,但我不太理解。

public void updateList() {


feedListView= (ListView) findViewById(R.id.custom_list);
feedListView.setVisibility(View.VISIBLE);
progressbar.setVisibility(View.GONE);
feedListView.setAdapter(new CustomListAdapter(this, feedList));


feedListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {


TextView clienteId = (TextView) v.findViewById(R.id.clienteId);
System.out.println("Clicou " + clienteId.getText());

int idCliente = Integer.valueOf(String.valueOf(clienteId.getText()));

for(int x=0; x<feedList.size(); x++) {


if(feedList.get(x).getId_rm() == idCliente) {

ArrayList<ClientesContatosModel> contatosDoCliente = new ArrayList<ClientesContatosModel>();

System.out.println(feedList.get(x).getNome() + " tem " + feedList.get(x).getContatos().size() + " contatos");

if(feedList.get(x).getContatos().size() > 0) {

System.out.println("Valor de x " + x);

for(int y=0; y<feedList.get(x).getContatos().size(); y++) {

ClientesContatosModel mClientesContatosModel = new ClientesContatosModel();

mClientesContatosModel.setNomeContato(feedList.get(x).getContatos().get(y).getNomeContato() );
mClientesContatosModel.setCargo(feedList.get(x).getContatos().get(y).getCargo());

contatosDoCliente.add(mClientesContatosModel);

}

}


Intent intent = new Intent(FeedListActivity.this, FeedDetailsActivity.class);
intent.putExtra("data", contatosDoCliente);


startActivity(intent);

}

}

}

});



}

解析Json:

public void parseJson(JSONObject json) throws JSONException {

try {

JSONArray dados = json.getJSONArray("dados");
feedList = new ArrayList<ClientesModel>();
// parsing json object
for (int i = 0; i < dados.length(); i++) {

JSONObject item = dados.getJSONObject(i);
ClientesModel mClientesModel = new ClientesModel();


mClientesModel.setId_rm(item.optInt("id"));
mClientesModel.setNome(item.optString("nome"));
mClientesModel.setTipo_pessoa(item.optString("tipo_pessoa"));
mClientesModel.setInformacoes_adicionais(item.optString("informacoes_adicionais"));
mClientesModel.setCpf(item.optString("cpf"));
mClientesModel.setCnpj(item.optString("cnpj"));

feedList.add(mClientesModel);


JSONArray contatos = item.getJSONArray("contatos");

if (contatos != null) {

contatoList = new ArrayList<ClientesContatosModel>();

for (int j = 0; j < contatos.length(); j++) {


JSONObject data = contatos.getJSONObject(j);

ClientesContatosModel mClientesContatoModel = new ClientesContatosModel();

mClientesContatoModel.setId_rm(data.optInt("id_rm_cliente"));
mClientesContatoModel.setNomeContato(data.optString("nome"));
mClientesContatoModel.setCargo(data.optString("cargo"));

contatoList.add(mClientesContatoModel);

JSONArray telefone = data.getJSONArray("telefones");

if (telefone != null) {

telefoneList = new ArrayList<ContatosTelefoneModel>();

for (int k = 0; k < telefone.length(); k++) {


JSONObject tel = telefone.getJSONObject(k);

ContatosTelefoneModel mContatosTelefoneModel = new ContatosTelefoneModel();

mContatosTelefoneModel.setId_rm(tel.optInt("id_rm_telefone"));
mContatosTelefoneModel.setNumero(tel.optString("numero"));
mContatosTelefoneModel.setTipo(tel.optString("tipo"));

telefoneList.add(mContatosTelefoneModel);

}

}


mClientesModel.setContatos(contatoList);
mClientesContatoModel.setTelefone(telefoneList);

System.out.println(mClientesContatoModel);
}


}
}
} catch (JSONException e) {
e.printStackTrace();
}
}

我想做的是:

intent.putExtra("json", (java.io.Serializable) new JSONArray().toString());

在我的第二个 Activity 中:

Bundle parametros = getIntent().getExtras();

String jsonArray = parametros.getString("json");

try {
JSONArray array = new JSONArray(jsonArray);

System.out.println("json array " + array.toString(2));
} catch (JSONException e) {
e.printStackTrace();
}

如何从主 json 中获取“telefones”并将其传递到第二个 Activity 中?

最佳答案

您可以尝试创建一个对象来存储 JSON 响应,然后从您的 Activity 中引用该对象,而不是通过 Intents 传递值:

public class DataObject{

private DataObject(){} // only one instance allowed
public JSONArray telefone;

public set_values(){
// set your JSON stuff here
telefone = data.getJSONArray("telefones");
}

}

现在您可以从任何 Activity 引用此对象...

public class SecondActivity extends Activity{
private JSONArray telefone;

private void get_values(){
this.telefone = DataObject.telefone;
}
}

希望这会有所帮助!

关于java - 如何将 Json 解析为另一个 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25081842/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com