gpt4 book ai didi

java - ProgressBar 直到 JSONParser 返回数据

转载 作者:行者123 更新时间:2023-11-29 21:41:26 26 4
gpt4 key购买 nike

我的应用程序使用 TabView 来显示数据。其中一个TabActivity对应JSONArray,其中一个是GoogleMap。当我点击其中一个时,应用程序会停止几秒钟,然后显示内容。所以我有一个问题 - 如何让它立即启动 ProgressBar,并且在加载数据时它会启动 Activity 的内容。我根本不知道如何使用 ProgressBar(这个旋转的东西)。

提前致谢。

最佳答案

使用AsyncTask下载您的数据。这样您的 UI 就不会卡住,直到数据下载完毕。

始终尝试将下载数据与 UI 线程分开。

您可以使用 onProgressUpdate() 方法来创建一个漂亮的进度条。

如果您无法计算任何进度,您应该在执行任务之前启用一个没有进度范围的对话框,并在 onPostExecute() 上将其删除。

请参阅文档中的用法示例以查看用法示例。

公共(public)类 HomeActivity 扩展 Activity {

private static String url = "address here";
private static final String TAG_CONTENT = "content";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_last_minute);
TextView tv = (TextView) findViewById(R.id.lastMinuteText);

// Create progress dialog
AlertDialog.Builder builder = new AlertDialog.Builder(this);
// Get the layout inflater
LayoutInflater inflater = getLayoutInflater();
// Inflate and set the layout for the dialog
// Pass null as the parent view because its going in the dialog
builder.setView(inflater.inflate(R.layout.progressdialog, null));
progressDialog = builder.create();
progressDialog.setTitle("Downloading JSON");
progressDialog.setButton(AlertDialog.BUTTON_NEGATIVE, "Whatever",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
// Show dialog
progressDialog.show();
//download json
new downloadJSON().Execute(url);
}
private class downloadJSON extends AsyncTask<String, Void, String> {

private String allMessages = "";
@Override
protected Void doInBackground(String... params) {
String url = params;
//JSON PARSER
JSONParser jParser = new JSONParser();

try {
JSONArray messages = jParser.getJSON(url);
} catch(JSONException e) {
e.printStackTrace();
}

for(int i = 0; i < messages.length(); i++) {
JSONObject c;
try {
c = messages.getJSONObject(i);
allMessages = allMessages + c.getString(TAG_CONTENT) +
"\n-----------------------------------------\n";
} catch (JSONException e) {
e.printStackTrace();
}
}

return allMessages ;
}

@Override
protected void onPostExecute(String result) {
tv.setText(result);
progressDialog.cancel();
}

@Override
protected void onProgressUpdate(Void... values) {

}

}

你的对话框(R.layout.progressdialog):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical" >

<ProgressBar
android:id="@+id/progressBar1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

</LinearLayout>

关于java - ProgressBar 直到 JSONParser 返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16987144/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com