android - 单个textview android中的多行数据

标签 android mysql json

这是我多次尝试使用 json 在单个 TextView 中获取多行值的代码。

protected Void doInBackground(Void... arg0)
        {

            HttpClient myClient = new DefaultHttpClient();
            HttpPost myConnection = new HttpPost("http://192.168.1.5/send-data.php");

            try {
                response = myClient.execute(myConnection);
                str = EntityUtils.toString(response.getEntity(), "UTF-8");

            } catch (ClientProtocolException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }


            try{
                JSONArray jArray = new JSONArray(str);

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

               }


            } catch ( JSONException e) {
                e.printStackTrace();
            }

            catch (Exception e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return null;
        }
        protected void onPostExecute(Void result)
        {
            try {
                textview.setText(json.getString("survey_textresponse"));

            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            //Hiding progress bar after done loading TextView.
            progressbar.setVisibility(View.GONE);

        }
    }


}

当我直接在 chrome 中运行 php 文件时,它会显示数据库中的所有值,而在 android 应用程序中它只显示第一行值。

最佳答案

因为您只将 JSONobject 的最后一个值存储在 json 引用中

// assume JArray length = 5
for( int i=0;  i <jArray.length(); i++) {
    json = jArray.getJSONObject(i); 
    // only have last object value , in last iteration jArray.getJSONObject(4)
}

这个问题可以有很多解决方案

  • 将数据收集为值列表

  • 在 String 或 StringBuilder 对象中收集

StringBuilder sb = new StringBuilder();
// or List<String> list = new ArrayList<>();

for( int i=0;  i <jArray.length(); i++) {
    json = jArray.getJSONObject(i);
    sb.append(json.optString("survey_textresponse")+"\n");
    // or list.add(json.optString("survey_textresponse"));
}

以后

textview.setText(sb.toString());
// or can collect list as string using loop and display it

关于android - 单个textview android中的多行数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46860465/

相关文章:

java - 蓝牙服务器和客户端的UUID

java - 正确使用 Universal Image Loader

Android 选择了错误的资源文件夹

php - 忽略 MYSQL 查询中的空值

ios - 可能从 JSON 数据对象解码的 Codable 结构数组

php - 对从 MySQL COUNT() 创建的 JSON 对象使用 $.each

java - 将大型 3gp 文件转换为字节数组

mysql - 选择顶部错误

c# - MySql 命令 : no rows returned

javascript - Google Drive API - 更改文件所有者 - 权限错误 400 "Permission type field required"