- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当用户选择触发 http 请求的微调项目时,如何添加进度栏。我是否将其添加到执行 http 请求 (dataCall) 的类或包含微调器的主要 Activity 中?
我有一个类DataCall
,当被调用时,它会对 php 脚本进行 http 调用,该脚本从 MySQL 数据库获取数据并以 JSON 格式返回数据。选择微调项目后调用此类。返回的数据将添加到同一 Activity 中的另一个微调器中。我试图在类 DataCall
执行其操作时显示进度轮。下面是我从 MainActivity
调用 DataCall
的代码以及来自 DataCall
的代码。
选择微调器时调用 DataCall(见下文)的 MainActivity。当 DataCall 返回数据时,它会使用新数据更新另一个微调器。
statespinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position,long arg3)
{
int id = parent.getId();
if (spinner1_count2 < spinner1_count1 ) {
spinner1_count2++; }
else
{
city.clear();
String item = statespinner.getSelectedItem().toString();
String spinnerContentType = "city";
String spinnerURL = "getStoreCity.php?state=" + item;
//CALLING DATACALL BELOW
String city_data = DataCall.getJSON(spinnerURL,spinnerContentType);
Log.d(TAG, city_data);
String state_spinner_log = "STATE SPINNER";
Log.d(TAG, state_spinner_log);
JSONArray jsonArray;
try {
cityjsonArray = new JSONArray(city_data);
for (int i=0; i<cityjsonArray.length(); i++)
{
String styleValue2 = cityjsonArray.getJSONArray(i).getString(0);
Log.d(TAG, styleValue2);
city.add(styleValue2);
adapter2.notifyDataSetChanged();
}
//
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});
数据调用类:
public class DataCall extends Activity {
private static final String TAG = "MyApp";
public static String getJSON(String myUrlString, String contentType){
String line = null;
String tag_value = null;
try {
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet httpPost = new HttpGet("http://www.mywebsite.com/getdata/" + myUrlString);
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
line = EntityUtils.toString(httpEntity);
} catch (UnsupportedEncodingException e) {
line = "<results status=\"error\"><msg>Can't connect to server1</msg></results>";
} catch (MalformedURLException e) {
line = "<results status=\"error\"><msg>Can't connect to server2</msg></results>";
} catch (IOException e) {
line = "<results status=\"error\"><msg>Can't connect to server3</msg></results>";
}catch (Exception anything) {
//Whatever
}
return line;
}
}
最佳答案
我认为您必须将此 Web 调用移至不同的线程,因为它将花费未知的运行时间并可能导致 ANR。
如果您使用 ASyncTask,它有一个内置机制,可以在后台线程运行时更新进度条。此链接有很多有值(value)的信息
http://www.vogella.de/articles/AndroidPerformance/article.html
希望这有帮助,m
关于java - 将进度条添加到我的 dataCall 函数 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7605176/
当用户选择触发 http 请求的微调项目时,如何添加进度栏。我是否将其添加到执行 http 请求 (dataCall) 的类或包含微调器的主要 Activity 中? 我有一个类DataCall,当被
我是一名优秀的程序员,十分优秀!