Ste*_* C. 3 php android android-volley
我知道如何使用Volley GET方法进行登录,但如果需要指定特定的"id"怎么办?我使用intent.putExtra将列表项的"id"从远程数据库传递到另一个活动.在下一个活动中,我将如何利用Volleys的GET方法使用通过"id"传递的另一个表来解析和显示数据?
在浏览器中,我可以使用以下内容来获取具有指定url和参数的响应:
http://localhost/demoapp/fetch.php?pid=2
Run Code Online (Sandbox Code Playgroud)
但我不知道如何将该URL传递给Volley请求并在列表视图中显示响应.像这样的东西:
"http://localhost/demoapp/fetch.php?pid=" + pid
Run Code Online (Sandbox Code Playgroud)
其中"pid"将是相应id的传递字符串.
编辑:PHP代码
<?php
include_once("config.php");
$query=mysqli_query($con,"SELECT * FROM comments WHERE pid=".$_GET['pid']);
$array;
while($result=mysqli_fetch_assoc($query)){
$array[]=$result;
}
echo json_encode($array);
?>
Run Code Online (Sandbox Code Playgroud)
编辑2:JAVA代码 主要活动
JsonArrayRequest request = new JsonArrayRequest(url+url_file,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.d(TAG, response.toString()); try {
for(int i=0;i<response.length();i++){
String pid=response.getJSONObject(i).getString("pid");
String name=response.getJSONObject(i).getString("product_name");
String img;
String thumb = response.getJSONObject(i).getString("product_thumb");
String detail = response.getJSONObject(i).getString("product_detail");
String rating = response.getJSONObject(i).getString("product_rating");
img = response.getJSONObject(i).getString("product_pic");
rowdata.add(new ProductRowData(pid,name,img,thumb,detail,rating));
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
adapter=new ProductsAdapter(MainActivity.this, rowdata);
list.setAdapter(adapter);
dialog.dismiss();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d(TAG, "Error: " + error.getMessage());
dialog.dismiss();
}
});
VolleyController.getInstance().addToRequestQueue(request, tag_json_arry);
Run Code Online (Sandbox Code Playgroud)
单击列表项时,其余数据将使用intent.putExtra传递给详细活动.我当时尝试做的是,在点击FAB时,应显示来自具有该产品ID的不同表的评论列表.
如果要使用GET,可以使用url参数创建请求:
String uri = String.format("http://localhost/demoapp/fetch.php?pid=%1$s", pid);
StringRequest myReq = new StringRequest(Method.GET,
uri,
createMyReqSuccessListener(),
createMyReqErrorListener());
Run Code Online (Sandbox Code Playgroud)
或者更好,你可以使用POST:
StringRequest stringRequest = new StringRequest(Request.Method.POST, "http://localhost/demoapp/fetch.php", new Response.Listener<String>()
{
@Override
public void onResponse(String s)
{
}
}, new Response.ErrorListener()
{
@Override
public void onErrorResponse(VolleyError volleyError)
{
}
})
{
@Override
protected Map<String, String> getParams()
{
Map<String, String> params = new HashMap<String, String>();
params.put("id", pid);
return params;
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11701 次 |
| 最近记录: |