如何使用Android + PHP json请求中的一系列价格

时间:2015-10-22 06:44:41

标签: php android mysql json

我有一个应用程序根据某些条件(州,城市,价格,车库......)从MySQL数据库中提供公寓

我正在阅读PHP脚本中的范围,BETWEEN和数组,但我找不到解决此问题的方法,因为除了从数据库中提取值之外,我还需要在我的列表视图中显示公寓,只要它的价格在价格范围之间:

我的Android应用程序中有一个微调器有一些价格范围($ 500.000 - $ 1.000.000,$ 1.000.000 - $ 2.000.000,$ .000.000 - $ 5.000.000)以及显示公寓的条件如下:

new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.d(TAG, response.toString());
pDialog.dismiss();

// Parsing json
for (int i = 0; i < response.length(); i++) {
    try {
        JSONObject obj = response.getJSONObject(i);
        Event event = new Event();
        event.setImovel_id(obj.getString("imovel_id"));
        event.setThumbnailUrl(obj.getString("arquivo"));
        event.setNegocio(obj.getString("negocio"));
        event.setImovel(obj.getString("imovel"));
        event.setMobilia(obj.getString("mobilia"));
        event.setGaragem(obj.getString("garagem"));
        event.setPreco(obj.getString("preco"));

        city = obj.getString("city");
        statee = obj.getString("state");
        checkNegocio = obj.getString("negocio");
        checkImovel = obj.getString("imovel");
        checkMobilia = obj.getString("mobilia");
        checkGaragem = obj.getString("garagem");
        checkPreco = obj.getString("preco");

        if(estado.getText().toString().equalsIgnoreCase(statee) && 
            cidade.getText().toString().equalsIgnoreCase(city) && 
            checkN.getText().toString().equalsIgnoreCase(checkNegocio) && 
            checkI.getText().toString().equalsIgnoreCase(checkImovel) && 
            checkM.getText().toString().equalsIgnoreCase(checkMobilia) && 
            checkG.getText().toString().equalsIgnoreCase(checkGaragem) && 
            checkP.getText().toString().equalsIgnoreCase(checkPreco)){

           // adding event to events array
           eventList.add(event);

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

} if(eventList.size() > 0){
    listView.setAdapter(adapter);
    listView.setTextFilterEnabled(true);
    }else{
        noEvent.setText("No results");                              
    }

    adapter.notifyDataSetChanged();
}
}

这是json编码的PHP文件

<?php

$link_list = array();
$link = array();

include_once 'db_connect.php';


$sql = "SELECT * FROM iMoveis";
$result = mysqli_query($mysqli, $sql);

while($row = mysqli_fetch_array($result)){

$link['imovel_id'] = $row['imovel_id'];

$link['arquivo'] = $row['arquivo'];
$link['state'] = $row['state'];
$link['city'] = $row['city'];
$link['negocio'] = $row['negocio'];
$link['imovel'] = $row['imovel'];
$link['mobilia'] = $row['mobilia'];

$link['garagem'] = $row['garagem'];
$link['preco'] = $row['preco'];



array_push($link_list, $link);  

}

echo json_encode($link_list, JSON_UNESCAPED_SLASHES);
?>

$ row [&#39; preco&#39;]从数据库中获取公寓的价格。

这样做的最佳方法是什么?有没有办法在我的java类中这样做?我认为这会更容易。提前谢谢。

修改: 我需要显示的价格在旋转器给出的平均价格范围内。我将公寓的价格作为我的数据库中的单个值(例如$ 1.200.000)。但是微调器对每个要选择的项目都有一系列的价格:

  • 1st = $ 1.000.000 to $ 2.000.000
  • 2nd = $ 2.000.000 to $ 5.000.000依旧......

我需要的是只有当数据库值在微调器的平均值内时才在列表视图中显示公寓。微调器发送的是$ 1.000.000到$ 2.000.000,而json只打印$ 1.200.000。所以它不匹配,也没有在listview上显示任何内容。它应该显示,因为$ 1.200.000在$ 1.000.000到$ 2.000.000之内。对不起,我不能发送版画屏幕给你一个更好的视图

1 个答案:

答案 0 :(得分:0)

我自己解决了旋转器选项。设置具有最小值和最大值的新旋转器,如果价格在这些值之间,我会显示公寓。