2016-05-09 63 views
1

我的android應用程序連接到服務器,並從數據庫中獲取信息並填充列表視圖。它工作正常xampp在我的本地主機。但將我的文件上傳到我的服務器後,它不起作用。在日誌中沒有錯誤除外。凌空不填充ListView與遠程服務器

d /亂射:[1] 2.onErrorResponse:ViewGuidesActivity

但是,當我在我的網頁瀏覽器上運行我的PHP文件時,它返回JSON數據完美。

public class ViewGuidesActivity extends AppCompatActivity { 

private static final String TAG = ViewGuidesActivity.class.getSimpleName(); 
private ProgressDialog pDialog; 
private List<Guide> guideList = new ArrayList<Guide>(); 
private ListView listView; 
private CustomListAdapter adapter; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_view_guides); 

    listView = (ListView) findViewById(R.id.list); 
    adapter = new CustomListAdapter(this, guideList); 
    listView.setAdapter(adapter); 

    pDialog = new ProgressDialog(this); 
    // Showing progress dialog before making http request 
    pDialog.setMessage("Loading..."); 
    pDialog.show(); 

    // Creating volley request obj 
    JsonArrayRequest movieReq = new JsonArrayRequest(AppConfig.URL_GET_GUIDE_LIST, 
      new Response.Listener<JSONArray>() { 
       @Override 
       public void onResponse(JSONArray response) { 
        Log.d(TAG, response.toString()); 
        hidePDialog(); 

        // Parsing json 
        for (int i = 0; i < response.length(); i++) { 
         try { 

          JSONObject obj = response.getJSONObject(i); 
          Guide guide = new Guide(); 
          guide.setNgno(obj.getString("ngno")); 
          guide.setEmail(obj.getString("email")); 
          guide.setName(obj.getString("name")); 


          // adding movie to movies array 
          guideList.add(guide); 

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

        } 

        // notifying list adapter about data changes 
        // so that it renders the list view with updated data 
        adapter.notifyDataSetChanged(); 
       } 
      }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      VolleyLog.d(TAG, "Error: " + error.getMessage()); 
      hidePDialog(); 

     } 
    }); 

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    this.getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

    // Adding request to request queue 
    AppController.getInstance().addToRequestQueue(movieReq); 

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapter, View view, int position, long id) { 
      Guide newGuide = guideList.get(position); 
      String email = newGuide.getEmail(); 
      String ngno = newGuide.getNgno(); 
      //System.out.println(email); 

      Intent i = new Intent(getApplicationContext(), GuideDetails.class); 
      i.putExtra("email", email); 
      i.putExtra("ngno", ngno); 
      startActivity(i); 
     } 
    }); 

} 

我的PHP文件:

$con=mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 
$sql = "select * from guide"; 
$result = mysql_query($sql); 
$json = array(); 

if(mysql_num_rows($result)){ 
     while($row=mysql_fetch_assoc($result)){ 
       $json[]=$row; 
     } 
} 
mysql_close($con); 
echo json_encode($json); 

我知道,我使用一些過時的方法,因爲我審閱一個過時的教程,和IM在轉換的過程中所有的PHP要使用的文件mysqli。但首先我需要讓我的應用程序工作。

這裏是我的JSON數據:

http://srilankatouristguides.com/guideList.php

我用我的代碼相同的URL。可能是什麼問題?不能弄明白,因爲它可以很好地與我的本地主機。任何幫助,將不勝感激。

+0

檢查數據庫用戶名,密碼和主機是否正確 –

+1

1.檢查onResponse方法是否返回預期結果。 2)也許發佈適配器代碼。 – danypata

+0

請向我們展示Log.d(TAG,response.toString());'是否正在打印 - 或者打印完成。我們需要確認這是否是從服務器返回的數據或列表視圖未更新的問題。 – ishmaelMakitla

回答

0

我設法解決它。未使用mysqli正在導致連接問題。可能服務器沒有使用已棄用的方法,所以我的代碼不起作用。將我的PHP代碼轉換爲mysqli後,一切正常。感謝指針傢伙!