以下代碼當前在我的main的onCreate()中運行。我現在只是在測試。我一直試圖在AsyncTask中完成這項工作,因爲我們的目標是能夠稍後動態更新這些內容,但似乎無法找到如何做到這一點。我想知道是否有人有一些見解。謝謝!使用AsyncTask更新UI(動態佈局)
LinearLayout ObjectLayout = (LinearLayout) findViewById(R.id.LayoutObjects);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
params.height = 140;
params.width = 140;
params.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);
for (int i = 0; i < 10; i++) {
Button btn = new Button(this);
btn.setLayoutParams(params);
btn.setPadding(0, 50, 0, 0);
btn.setTextSize(14);
btn.setText("MyButton");
btn.setTextColor(color.Yellow);
// Drawable image = Drawable.createFromPath("@drawable/add_page");
// //
// btn.setBackgroundDrawable(image);
btn.setBackgroundDrawable(getResources().getDrawable(
R.drawable.add_page));
// btn.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
ObjectLayout.addView(btn);
}
private class GetDataTask2 extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
// Simulates a background job.
for (int i = 0; i < 10; i++) {
publishProgress(btn2);
}
return null;
}
protected void publishProgress(Button btn2) {
btn2.setLayoutParams(params2);
btn2.setPadding(0, 50, 0, 0);
btn2.setTextSize(14);
btn2.setText("MyButton yo yo yo ");
btn2.setTextColor(color.Yellow);
btn2.setBackgroundDrawable(getResources().getDrawable(
R.drawable.add_page));
ObjectLayout2.addView(btn2);
// Process width and height
}
protected void onPostExecute() {
// Do some stuff here
// Call onRefreshComplete when the list has been refreshed.
}
}
這裏這段代碼是我爲我的異步和定義的佈局和按鈕創建爲實例中mainactivity,只是爲了測試和理解這一點,但我得到的錯誤,我一直在圍繞操縱它,但似乎沒有上班。
」首先,您需要將Context和LinearLayout傳遞給AsyncTask,只需使用自定義構造函數即可。「究竟是什麼樣子,對於愚蠢的問題抱歉,只是有點困惑。 – thekevshow
添加到答案的鏈接。 – Geobits
我添加了更多的代碼,關於異步我會去關於自定義構造函數後,我得到這個測試工作,並理解它好一點,只是好奇,如果你可以看看看什麼是錯的。 – thekevshow