获取jsonArray之外的值以进行循环

时间:2019-10-18 07:15:07

标签: android arrays json kotlin android-volley

我正在为我的项目开发一个杂货应用程序,并且得到了这个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()以在其他活动中使用它们?

谢谢!

4 个答案:

答案 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()
  }