我正在尝试使用 Retrofit 从 MySQL 检索数据。
我在代码中没有发现任何错误,但是当我从设备运行应用程序时,它卡在“正在获取数据的进度对话框”上...
下面是我获取数据的代码
private void getBooks(){
final ProgressDialog loading = ProgressDialog.show(this,"Mengambil Data..","Silahkan Tunggu...",false,false);
RestAdapter adapter = new RestAdapter.Builder()
.setEndpoint(ROOT_URL)
.build();
BookAPI api = adapter.create(BookAPI.class);
api.getBooks(new Callback<List<Book>>() {
@Override
public void success(List<Book> list, Response response) {
loading.dismiss();
books = list;
showList();
}
@Override
public void failure(RetrofitError error) {
}
});
}
private void showList(){
String[] items = new String[books.size()];
for(int i = 0; i<books.size();i++){
items[i] = books.get(i).getName();
}
ArrayAdapter adapter = new ArrayAdapter<String>(this, R.layout.simple_list,items);
listView.setAdapter(adapter);
}
还有我的界面下方
public interface BookAPI {
@GET("/retrofit/listdata.php")
public void getBooks(Callback<List<Book>> response);
}
最后是我的用于列出数据的 php 文件,名为 listdata.php
$link = mysqli_connect('localhost', 'root', '') or die('Cannot connect to the DB');
mysqli_select_db($link, 'retrofit') or die('Cannot select the DB');
$query = "SELECT * FROM tbl_book";
$rs = mysqli_query($link, $query) or die('Errorquery: ' . $query);
$countrow = mysqli_affected_rows($link);
$items = array();
while($row = mysqli_fetch_object($rs)) {
array_push($items, $row);
}
if ($countrow > 0) {
// $result["errorcode"] = "1";
$result = $items;
} else {
$result["errormsg"] = "Tidak ada data";
}
echo json_encode($result);
是因为我在界面上使用了 php 文件而不是 json 文件吗?
我在演示项目中实现了 RecyclerView 和 Retrofit,它具有 SwipeView 布局(拉动刷新)。请检查下面的存储库。 https://github.com/frankodoom/Retrofit-RecyclerVew