另一个Android初学者在这里!
好的,我在使用Toast时帮助我检查错误。我收到403禁止错误,我不知道是什么导致它。 url是正确的,因为我的另一个函数从数据库返回数据。
public class FillKeg extends Activity {
Spinner spinBeerList;
ArrayList<String> BeerList;
ArrayAdapter<String> adapter;
JSONArray jArray;
String result = null;
InputStream is = null;
StringBuilder sb = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.fillkeg);
spinBeerList = (Spinner)findViewById(R.id.spinBeerList);
BeerList = new ArrayList<String>();
new getBeerList().execute("http://*****/kegdroid/getBeerList.php");
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, BeerList);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinBeerList.setAdapter(adapter);
}
private class getBeerList extends AsyncTask<String, Void, String> {
protected String doInBackground(String... urls) {
//http post
for (String url : urls) {
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
try{
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
sb = new StringBuilder();
sb.append(reader.readLine() + "\n");
String line = "0";
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result = sb.toString();
}
catch(Exception e){
Log.e("log_tag", "Error in http connection" + e.toString());
}
}
return result;
}
protected void onPostExecute(String result){
try{
jArray = new JSONArray(result);
JSONObject json_data = null;
for(int i = 0; i < jArray.length(); i++){
json_data = jArray.getJSONObject(i);
BeerList.add(json_data.getString("ContentsName"));
}
}
catch(JSONException ex){
ex.printStackTrace();
}
catch (ParseException ex) {
ex.printStackTrace();
}
}
}
}
答案 0 :(得分:0)
您正在更新ArrayList
支持Adapter
而不致电notifyDataSetChanged
。尝试将通话adapter.notifyDataSetChanged();
添加到onPostExecute
的结尾。
或者,您可以拨打adapter.add(json_data.getString("ContentsName"));
来代替对BeerList
的类似通话,Spinner
应自动更新。
答案 1 :(得分:0)
我觉得这很愚蠢,但我的错误源于Apache配置,而不是应用程序代码。最近我的WAMP安装的Apache更新拒绝了对我网络IP的调用的访问。
非常感谢OcuS和Brian Cooley帮助解决我的代码的其他方面!