私はPHP
Web サービスを持っており、それをクエリしてユーザー インターフェイスを設定しています。JSONObject json = jParser.makeHttpRequest(url, "GET",params);
渡された URL を無視し、代わりに最後に使用した PHP URL に対してクエリを実行しているという問題があります。
これを複製するには、editext1 で「EF」を検索し、ボタンを押します。次に、edittext1 の末尾から「F」を削除します。LayoutSpinner は、menuitems.php の代わりに test.php Web サービスを照会したため、'Civic' 'Hatch' 'Civic' 'Hatch' の 101 エントリでいっぱいになります。
setOnItemSelectedListener
スピナー コントロールのいずれかが変更されるたびにトリガーされる URL 文字列が設定されています。次に、バックグラウンド タスク LoadAllProducts を起動して、Web サービスにクエリを実行します。jParser.makeHttpRequest(url, "GET",params)
ブレークポイントを使用して変数を監視することで、行が実行されたときに URL 文字列が menuitems.php を指していることを確認しました。他の誰かが以前にこの問題に遭遇したことがありますか?それを修正するには、どのルートに進む必要がありますか?
どんな助けでも大歓迎です。
これが私のコードです:
// view products click event
btnViewProducts.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view)
// Execute LoadAllProducts
url = "http://www.jankuyado.com/Components/test.php";
new LoadAllProducts().execute();
}
// listener for EditText1 changes.
@Override
public void afterTextChanged(Editable s) {
chassiscode = v.getText().toString(); //put the chassiscode into a global variable.
url = "http://www.jankuyado.com/Components/menuitems.php";
new LoadAllProducts().execute();
}
class LoadAllProducts extends AsyncTask<String, String, String> {
protected String doInBackground(String... args) {
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("chassiscode",chassiscode));
params.add(new BasicNameValuePair("Civic", model));
params.add(new BasicNameValuePair("layout", layout));
// Creating JSON Parser object
JSONParser jParser = new JSONParser();
// getting JSON string from URL
JSONObject json = jParser.makeHttpRequest(url, "GET",params);
products = json.getJSONArray("components");
productslist.clear(); //clear the productslist and start from scratch.
// looping through All Products
for (int i = 0; i < products.length(); i++) {
JSONObject c = products.getJSONObject(i);
if(url == "http://www.jankuyado.com/Components/test.php") {
//if components are being retrieved
// adding HashList to ArrayList
productslist.add(c.getString("ComponentName"));
} else if (url == "http://www.jankuyado.com/Components/menuitems.php") {
//else if menu items are being retrieved.
// Storing each json item in the productslist
if (c.has("model")) {
MenuReturnType = "model"; //flag global variable MenuReturnType as returning car Models (used later when parsing the Productlist).
productslist.add(c.getString("model"));
}
if (c.has("layout")) {
MenuReturnType = "layout"; //flag global variable MenuReturnType as returning car Layouts (used later when parsing the Productlist).
productslist.add(c.getString("layout"));
}
}
}
}
return null;
}
protected void onPostExecute(String file_url) {
// updating UI from Background Thread
runOnUiThread(new Runnable() {
public void run() {
//stuff that updates ui here