【问题标题】:passing array of data using JSON in android在android中使用JSON传递数据数组
【发布时间】:2012-12-05 06:48:08
【问题描述】:

我需要通过创建 JSON 对象将数据从 MYSQL 数据库传递到 android 应用程序。我只能从 MYSQL 数据库传递第一个值。如何将所有值一起传递给 android 应用程序。 (我的数据库包含超过 10 个位置的纬度和经度值。)

以下是我仅将第一行值从数据库传递到 Android 应用程序的代码。

        try {

        HttpClient client = new DefaultHttpClient();
        URI website = new URI("http://192.168.1.15/latlonret1.php");
        HttpGet request = new HttpGet();
        request.setURI(website);
        HttpResponse response = client.execute(request);
        in = new BufferedReader(new InputStreamReader(response
                .getEntity().getContent()));
        StringBuffer sb = new StringBuffer("");
        String l = "";
        String nl = System.getProperty("line.separator");

        while ((l = in.readLine()) != null) {
            sb.append(l + nl);
        }
        in.close();
        data = sb.toString();
        // return data;
    } catch (Exception e) {
        Log.e("log_tag", "Error converting result " + e.toString());
    }
        try {
        String returnString;
        String returnString1;
        JSONArray jArray = new JSONArray(data);
        for (int i = 0; i < jArray.length(); i++) {
            JSONObject json_data = jArray.getJSONObject(i);
            JSONObject json_data1 = jArray.getJSONObject(i);


            returnString=json_data.getString("lat") + "\n";
            returnString1=json_data1.getString("lon") + "\n";
            System.out.println(returnString);
            System.out.println(returnString1);

            Intent viewIntent =new Intent(Androidmap.this,Mapview.class);

            Bundle bundle = new Bundle();
            bundle.putString("stuff", returnString); 
            viewIntent.putExtras(bundle);

            Bundle bundle1 = new Bundle();
            bundle1.putString("stuff1", returnString1); 
            viewIntent.putExtras(bundle1); 
            startActivity(viewIntent);
      }

这是我的服务器端编码:

<?php
 ob_start();
 $host="localhost"; // Host name 
 $username=""; // Mysql username 
 $password=""; // Mysql password 
 $db_name="test"; // Database name 
 $tbl_name="manu"; // Table name 

 mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
 mysql_select_db("$db_name")or die("cannot select DB");
 $sql = "select lat , lon from manu ";
 $result=mysql_query($sql);

 if(! $result )
 {
 die('Could not get data: ' . mysql_error());
 }

 while($row=mysql_fetch_array($result , MYSQL_ASSOC)) 
{

$output[]=$row;

}

 echo json_encode($output);
 mysql_close();
?>

【问题讨论】:

  • 你是如何使用 PHP 创建 serevr 端的?
  • 你能发布 JSON 吗?没有看到就很难说发生了什么......
  • 我已经更新了我的问题。请看一下

标签: php android json


【解决方案1】:

您需要在前一个字符串中附加下一个纬度和经度值:

ArrayList<String> arrlan=new ArrayList<String>();
ArrayList<String> arrlat=new ArrayList<String>(); 
       for (int i = 0; i < jArray.length(); i++) {
            JSONObject json_data = jArray.getJSONObject(i);
            JSONObject json_data1 = jArray.getJSONObject(i);


            returnString  =json_data.getString("lat") + "\n";
            returnString1  =json_data1.getString("lon") + "\n";

            arrlat.add(returnString);  
            arrlan.add(returnString1);   

            System.out.println(returnString);
            System.out.println(returnString1);
      }
 Intent viewIntent =new Intent(Androidmap.this,Mapview.class);


 viewIntent.putStringArrayListExtra("returnString",arrlat);
 viewIntent.putStringArrayListExtra("returnString1",arrlan);


 startActivity(viewIntent);

并在 Mapview 中获取这些数组列表:

ArrayList<String> arrlan=new ArrayList<String>();
ArrayList<String> arrlat=new ArrayList<String>(); 

arrlat = getIntent().getStringArrayListExtra("returnString");
arrlan = getIntent().getStringArrayListExtra("returnString1");

【讨论】:

  • 我需要从数据库中传递所有纬度和经度值并将其绘制在一张地图上。当我每次都这样做时,它会调用一个新的单独地图来标记位置。如何解决它..
  • @user1844654 查看我的编辑答案并使用 arrlat 和 arrlan arraylist 在地图活动中获取 lan 和 lat
【解决方案2】:

试试这个,你只需要创建一个对象。

    for (int i = 0; i < jArray.length(); i++) 
       {
        JSONObject json_data = jArray.getJSONObject(i);

        returnString=json_data.getString("lat") + "\n";
        returnString1=json_data.getString("lon") + "\n";
       }

【讨论】:

  • 我试过了。它正在获取第一个值并将其放置在地图中,然后再次返回到称为 Mapactivity 的 MainActivity。它再次获得第二个值并将其放置在新的单独地图中。我不想为每个位置创建单独的地图。我只需要一张地图就可以在 android google map 上显示存储在 DB 中的所有位置
猜你喜欢
  • 2015-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多