【发布时间】:2014-03-20 07:44:39
【问题描述】:
我正在尝试将数据从 mysql 加载到列表视图中,但无法执行此操作。我运行这段代码,但模拟器上没有显示任何内容,几秒钟后应用程序崩溃。请建议我哪里出错了。这是 MainActivity.java 文件
package com.example.student;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.os.Bundle;
import android.os.StrictMode;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends Activity {
TextView text;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
connect();
}
private void connect() {
String data;
List<String> r = new ArrayList<String>();
ArrayAdapter<String>adapter=new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1,r);
ListView list=(ListView)findViewById(R.id.listView1);
try {
DefaultHttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet("http://10.10.6.124/android/insert.php");
HttpResponse response = client.execute(request);
HttpEntity entity=response.getEntity();
data=EntityUtils.toString(entity);
Log.e("STRING", data);
try {
JSONArray json=new JSONArray(data);
for(int i=0;i<json.length(); i++)
{
JSONObject obj=json.getJSONObject(i);
String name=obj.getString("name");
String year=obj.getString("year");
String age=obj.getString("age");
Log.e("STRING", name);
r.add(name);
r.add(year);
r.add(age);
list.setAdapter(adapter);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (ClientProtocolException e) {
Log.d("HTTPCLIENT", e.getLocalizedMessage());
} catch (IOException e) {
Log.d("HTTPCLIENT", e.getLocalizedMessage());
}
}
}
这是 PHP 文件 index.php
<?php
header('Content-type: application/json');
mysql_connect("127.0.0.1","root","");
mysql_select_db("student");
$sql=mysql_query("select * from student");
while($row=mysql_fetch_assoc($sql))
$output[]=$row;
json_encode($output);
print(json_encode($output));
mysql_close();
?>
【问题讨论】:
-
如果您使用的是模拟器,那么您需要将 ip 地址更改为
http://10.0.2.2/android/insert.php如果您的服务器有端口,请在 ip 之后添加端口,例如:10.0.2.2:4444/... -
在浏览器中调用 127.0.0.1 的结果是什么
-
当我调用 127.0.0.1/student/index.php 我得到正确的 JSON 响应 @Sreekanthss
-
浏览器中的10.10.6.124/android/insert.php 怎么样?这也有效吗?
-
不,这不起作用@Sreekanthss
标签: php android mysql listview