改造列表视图

问题描述 投票:0回答:1

我正在尝试使用 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 文件吗?

android mysql retrofit
1个回答
0
投票

我在演示项目中实现了 RecyclerView 和 Retrofit,它具有 SwipeView 布局(拉动刷新)。请检查下面的存储库。 https://github.com/frankodoom/Retrofit-RecyclerVew

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.