Android Blank ListView-从外部SQL数据库中提取
我正在开发一个Android Studio应用程序,需要使用php从外部SQL数据库的表中提取信息,并将其显示在ListView中。代码没有显示任何错误,但运行时ListView在屏幕上没有显示任何内容 这就是我所指的: Java(这是应用程序的主屏幕,这是ListView所在的屏幕) home_page_no_mood.php(这是连接到数据库的php文件)Android Blank ListView-从外部SQL数据库中提取,android,listview,arraylist,adapter,Android,Listview,Arraylist,Adapter,我正在开发一个Android Studio应用程序,需要使用php从外部SQL数据库的表中提取信息,并将其显示在ListView中。代码没有显示任何错误,但运行时ListView在屏幕上没有显示任何内容 这就是我所指的: Java(这是应用程序的主屏幕,这是ListView所在的屏幕) home_page_no_mood.php(这是连接到数据库的php文件) 多谢各位 8:16使用模拟链接logcat运行: 03-22 08:16:20.2263277-3277/?I/art:未延迟启用-
多谢各位
8:16使用模拟链接logcat运行:
03-22 08:16:20.2263277-3277/?I/art:未延迟启用-Xcheck:jni
(已打开)03-22 08:16:20.2263277-3277/?W/art:意外的CPU
使用默认值的X86变体:X86 03-22 08:16:20.245 3277-3284/?
I/art:调试器不再处于活动状态03-22 08:16:20.245 3277-3284/?
I/art:启动阻塞GC仪表03-22 08:16:20.344
3277-3277/? W/系统:类加载器引用的未知路径:
/data/app/com.example.marlo.myapplication-2/lib/x86 03-22 08:16:20.349
3277-3277/? I/InstantRun:启动的即时运行服务器
com.example.marlo.myapplication 03-22 08:16:20.896 3277-3305/?
I/OpenGLRenderer:初始化EGL,版本1.4 03-22 08:16:20.896
3277-3305/? D/OpenGLRenderer:交换行为103-22 08:16:20.897
3277-3305/? W/OpenGLRenderer:无法使用选择配置
EGL\u交换\u行为\u保留,重试时没有。。。03-22 08:16:20.897
3277-3305/? D/OpenGLRenderer:交换行为0 03-22 08:16:28.309
3277-3277/com.example.marlo.myapplication W/IInputConnectionWrapper:
非活动输入连接上的finishComposingText 03-22 08:16:36.409
3277-3277/com.example.marlo.myapplication W/IInputConnectionWrapper:
非活动InputConnection上的finishComposingText
加载数据的异步任务被注释掉,因此不会执行
//new HomePageActivity(this).execute();
注意:您应该将HomePageActivity重命名为LoadDataTask首先检查此链接上方的任何数据?不工作您可以通过转到mockable.io并为您的请求设置模拟响应来为该webservice api创建模拟,只需创建一个帐户,使用json响应设置url运行它,然后您可以粘贴url并将其替换为“cgi.soic.indiana.edu/~team19/home\u page\u no\u mood.php”我们尝试用这个可模拟的链接替换php链接,但没有显示任何错误。在上面添加logcat。谢谢!我在后面添加了一个变体,并将其移动到正确的位置。新建HomePageActivity().execute();现在,我的代码运行完毕,显示一个空白列表视图,但屏幕上显示else错误:“无法从服务器获取json。请检查LogCat以了解可能的错误!”
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="@dimen/activity_horizontal_margin">
<TextView
android:id="@+id/username"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="2dip"
android:paddingTop="6dip"
android:textColor="@color/colorPrimaryDark"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:id="@+id/email"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="2dip"
android:textColor="@color/colorAccent" />
<TextView
android:id="@+id/age"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#5d5d5d"
android:textStyle="bold" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_height="match_parent">
<include layout="@layout/app_bar"
/>
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:theme="?attr/actionBarTheme"
android:minHeight="?attr/actionBarSize"
android:id="@+id/bottomMenu"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/ic_facilities"
android:id="@+id/facilitiesIcon"
android:background="@null"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_alignTop="@+id/bottomMenu"
android:onClick="facilitiesHome" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/ic_trackers"
android:layout_marginLeft="34dp"
android:layout_marginStart="34dp"
android:id="@+id/trackersIcon"
android:background="@null"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignTop="@+id/bottomMenu"
android:onClick="trackersHome" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/ic_activities"
android:layout_marginRight="34dp"
android:layout_marginEnd="34dp"
android:id="@+id/activitiesIcon"
android:background="@null"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignTop="@+id/bottomMenu"
android:onClick="activitiesHome" />
<Button
android:text="NEW ENTRY"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/bNewEntry"
android:backgroundTint="#69f0ae"
android:onClick="newEntry"
android:layout_above="@+id/bottomMenu"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<Button
android:text="recommended activities"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button2"
android:layout_above="@+id/bNewEntry"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<ListView
android:id="@+id/databaseItems"
android:inputType="textNoSuggestions"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/button2"
android:layout_centerHorizontal="true" />
</RelativeLayout>
package com.example.marlo.myapplication;
import android.util.Log;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
/**
* Created by MARLO on 3/21/17.
*/
public class HttpHandler {
private static final String TAG = HttpHandler.class.getSimpleName();
public HttpHandler() {
}
public String makeServiceCall(String reqUrl) {
String response = null;
try {
URL url = new URL(reqUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
// read the response
InputStream in = new BufferedInputStream(conn.getInputStream());
response = convertStreamToString(in);
} catch (MalformedURLException e) {
Log.e(TAG, "MalformedURLException: " + e.getMessage());
} catch (ProtocolException e) {
Log.e(TAG, "ProtocolException: " + e.getMessage());
} catch (IOException e) {
Log.e(TAG, "IOException: " + e.getMessage());
} catch (Exception e) {
Log.e(TAG, "Exception: " + e.getMessage());
}
return response;
}
private String convertStreamToString(InputStream is) {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line;
try {
while ((line = reader.readLine()) != null) {
sb.append(line).append('\n');
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
}
<?php
$con = mysqli_connect("db.soic.indiana.edu", "caps16_team19", "capstoneteam19", "caps16_team19");
if (mysqli_connect_errno($con))
{
echo '{"query_result":"ERROR"}';
}
$accountid = $_GET["acid"]
$statement = mysqli_query($con, "SELECT a.username, a.email, a.dob, a.sex, a.hobbies, a.interests FROM account AS a WHERE a.acid = (SELECT max(a.acid))");
$rows = '{"userdata": "["}';
if($statement->num_rows > 0) {
while($row = mysqli_fetch_array($statement))
{
$rows = $row;
}
} else {
echo '{"query_result":"FAILURE"}';
}
$rows = '{"]"}';
echo json_encode($rows);
?>
//new HomePageActivity(this).execute();