首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Android数据(来自mysqli的输出)无法在TextView中工作。

Android数据(来自mysqli的输出)无法在TextView中工作。
EN

Stack Overflow用户
提问于 2016-09-09 09:37:01
回答 2查看 52关注 0票数 0

我正在为显示从PHP输出到TextView的json数据做一些基本测试。

代码语言:javascript
运行
AI代码解释
复制
TextView mTxtDisplay;

String url = "http://192.168.1.102/web_service/test.php/";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mTxtDisplay = (TextView) findViewById(R.id.tv);

    JsonObjectRequest jsObjRequest = new JsonObjectRequest
            (Request.Method.GET, url, null, new Response.Listener<JSONObject>() {

                @Override
                public void onResponse(JSONObject response) {
                    mTxtDisplay.setText(response.toString());
                }
            }, new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {
                    // TODO Auto-generated method stub

                }
            });

    RequestQueue requestQueue = Volley.newRequestQueue(this);
    requestQueue.add(jsObjRequest);
}}

192.168.1.102/web_service/test.php

代码语言:javascript
运行
AI代码解释
复制
$sql="SELECT * FROM item where uid='1'";
$result = mysqli_query($conn, $sql);
$myArray = array();
if (mysqli_num_rows($result) > 0) {
    while($row = $result->fetch_array(MYSQL_ASSOC)) {
            $myArray[] = $row;
    }
    echo json_encode($myArray);
}

输出

代码语言:javascript
运行
AI代码解释
复制
[{"iid":"482","uid":"1","item_id":"1","item_name":"Chicken Rice","item_price":"1","item_quantity":"1","status":"0"},
{"iid":"483","uid":"1","item_id":"1","item_name":"French Fries","item_price":"1","item_quantity":"1","status":"0"},
{"iid":"484","uid":"1","item_id":"1","item_name":"apple","item_price":"1","item_quantity":"1","status":"0"},
{"iid":"492","uid":"1","item_id":"1","item_name":"western+italian","item_price":"1","item_quantity":"1","status":"0"},
{"iid":"493","uid":"1","item_id":"1","item_name":"no_cat","item_price":"1","item_quantity":"1","status":"0"}]

我想我的儿子是对的?但是它根本不显示在Textview中,,它是空的!没有任何错误,

之后,我意识到以下格式的数据运行良好(正常的硬代码数组)。

代码语言:javascript
运行
AI代码解释
复制
{
"1":{"name":"Superman","date":"20160909","location":"Mars"},
"2":{"name":"Xman","date":"20160909","location":"Galaxy"},
"3":{"name":"Batman","date":"20160909","location":"Earth"}
}

因此,这意味着没有"[]“的第二个json数据工作得很好,但是带有"[]”的第一个json数据却不能工作。但这不应该是正确的方式?

编码有什么问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-09 09:41:33

这是因为[]中的数据是JSONArray而不是JSONObject。而不是JSONObjectRequest,尝试StringRequest,然后将响应打印到EditText/TextView中。您可以通过将数组元素转换为JSONArray来访问它们。

代码语言:javascript
运行
AI代码解释
复制
JSONArray arr=new JSONArray(response);
票数 1
EN

Stack Overflow用户

发布于 2016-09-09 11:20:39

与JSONObjectRequest尝试使用StringRequest不同,您的代码如下所示:

代码语言:javascript
运行
AI代码解释
复制
        StringRequest jsonReq = new StringRequest(Request.Method.POST,
            URL, new Response.Listener<String>() {

        @Override
        public void onResponse(String s) {
         Log.d("Response", s);
         textView.setText(s)
        }
    }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
         //do error code here..
        }
    }) {
        @Override
        public Map<String, String> getParams(){
            Map<String, String> params = new HashMap<String, String>();
            params.put("param1", value);
            return params;
        }
    };

getParams用于向具有用户定义值的服务器发送请求或在运行时获取某些特定数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39416968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文