我正在为我的项目开发一个杂货应用程序,并且得到了这个JSON数组
[
{
"msg":"success",
"id":"1904",
"firstname":"john",
"lastname":"doe",
"email":"johndoe@gmail.com",
"mobile":"10111213",
"appapikey ":"aba27d8447acd61152ad716696465c27"
}
]
我正在使用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)
...
...
有没有一种方法可以使for
循环之外的那些项(id,名字,姓氏,电子邮件等)到达putExtra()以在其他活动中使用它们?
谢谢!
答案 0 :(得分:1)
在循环外初始化变量,然后在循环内修改它们。这是您的代码以及我的答案的实现。
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()
}
答案 1 :(得分:1)
您可以将JSON数组转换为Bundles的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)
答案 2 :(得分:1)
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");
答案 3 :(得分:1)
我建议您将响应字符串作为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)
在 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()
}