[英]Get values outside of jsonArray for loop
I'm working on a grocery app for my project and I got this JSON Array我正在为我的项目开发一个杂货应用程序,我得到了这个 JSON 数组
[
{
"msg":"success",
"id":"1904",
"firstname":"john",
"lastname":"doe",
"email":"johndoe@gmail.com",
"mobile":"10111213",
"appapikey ":"aba27d8447acd61152ad716696465c27"
}
]
And I'm using Volley
StringRequest我正在使用
Volley
StringRequest
val stringRequest = StringRequest(Request.Method.GET, url, Response.Listener {
var jsonArrayInfo = JSONArray(it)
for(i in 0 until(jsonArrayInfo.length())) {
var userInfo = jsonArrayInfo.getJSONObject(i)
var fName = userInfo.getString("firstname")
var lName = userInfo.getString("lastname")
var eMail = userInfo.getString("email")
var moBile = userInfo.getString("mobile")
var apiKey = userInfo.getString("appapikey ")
Toast.makeText(view.context, "Welcome $apiKey", Toast.LENGTH_SHORT).show()
}
var i = Intent(view.context, MainActivity::class.java)
//I want to bring the values out here
//to use them in another class with putExtra()
startActivity(i)
...
...
Is there a way I can get those items (id, firstname, lastname, email,...) outside of the for
loop to to putExtra() to use them in another activity?有没有办法让我在
for
循环之外获取这些项目(id、名字、姓氏、email、...)到 putExtra() 以在另一个活动中使用它们?
Thank you!谢谢!
Initialize your variables out of the loop then modify them inside the loop.在循环外初始化变量,然后在循环内修改它们。 Here is your code with implementations of my answer.
这是您的代码以及我的答案的实现。
val stringRequest = StringRequest(Request.Method.GET, url, Response.Listener {
var jsonArrayInfo = JSONArray(it)
var fName = ""
var lName = ""
var eMail = ""
var moBile = ""
var apiKey = ""
for(i in 0 until(jsonArrayInfo.length())) {
var userInfo = jsonArrayInfo.getJSONObject(i)
fName = userInfo.getString("firstname")
lName = userInfo.getString("lastname")
eMail = userInfo.getString("email")
moBile = userInfo.getString("mobile")
apiKey = userInfo.getString("appapikey ")
Toast.makeText(view.context, "Welcome $apiKey", Toast.LENGTH_SHORT).show()
}
You could convert the JSON Array to an ArrayList of Bundles and then use putParcelableArrayListExtra
.您可以将 JSON 数组转换为 ArrayList 的捆绑包,然后使用
putParcelableArrayListExtra
。
val stringRequest = StringRequest(Request.Method.GET, url, Response.Listener {
var jsonArrayInfo = JSONArray(it)
val bundles = ArrayList<Bundle>()
for(i in 0 until(jsonArrayInfo.length())) {
var userInfo = jsonArrayInfo.getJSONObject(i)
val bundle = Bundle()
bundle.putCharSequence(userInfo.getString("firstname"))
bundle.putCharSequence(userInfo.getString("lastname"))
bundle.putCharSequence(userInfo.getString("email"))
bundle.putCharSequence(userInfo.getString("mobile"))
bundle.putCharSequence(userInfo.getString("appapikey "))
bundles.add(bundle)
}
var i = Intent(view.context, MainActivity::class.java)
i.putParcelableArrayListExtra("data", bundles)
startActivity(i)
val stringRequest = StringRequest(Request.Method.GET, url, Response.Listener {
ArrayList<ArrayList<String>> arrayLists=new ArrayList<>();
var jsonArrayInfo = JSONArray(it)
for(i in 0 until(jsonArrayInfo.length())) {
ArrayList arr= new ArrayList();
var userInfo = jsonArrayInfo.getJSONObject(i)
var fName = userInfo.getString("firstname")
var lName = userInfo.getString("lastname")
var eMail = userInfo.getString("email")
var moBile = userInfo.getString("mobile")
var apiKey = userInfo.getString("appapikey ")
arr.add(fName);
arr.add(lName);
arr.add(eMail);
arr.add(moBile);
arr.add(apiKey);
arrayLists.add(arr);
Toast.makeText(view.context, "Welcome $apiKey", Toast.LENGTH_SHORT).show()
}
//to send another Activity
Intent i = new Intent(this, MainActivity.class)
intent.putExtra("mylist", myList);
startActivity(i)
//receive Another Activity
ArrayList<ArrayList<String>> myList = (ArrayList<ArrayList<String>))
getIntent().getSerializableExtra("mylist");
I would suggest you to pass the response string as a stringExtra of the Intent and deserialize it in the other Activity我建议您将响应字符串作为 Intent 的 stringExtra 传递并在另一个 Activity 中反序列化它
val stringRequest = StringRequest(Request.Method.GET, url, Response.Listener {
var i = Intent(view.context, MainActivity::class.java)
i.putExtra("response", it.toString())
startActivity(i)
In MainActivity在MainActivity
val res = intent.getStringExtra("response")
var jsonArrayInfo = JSONArray(res)
for(i in 0 until(jsonArrayInfo.length())) {
var userInfo = jsonArrayInfo.getJSONObject(i)
var fName = userInfo.getString("firstname")
var lName = userInfo.getString("lastname")
var eMail = userInfo.getString("email")
var moBile = userInfo.getString("mobile")
var apiKey = userInfo.getString("appapikey ")
Toast.makeText(context, "Welcome $apiKey", Toast.LENGTH_SHORT).show()
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.