如何在AsyncClass的OnPostMethod中设置ImageView和TextView

时间:2012-11-01 09:17:06

标签: android android-layout android-asynctask android-ui

我想在AsyncClass的OnPostMethod中的imageview和textview中设置图像和文本,就像我在“do in background”方法中进行一些网络操作一样,对于特定的响应,我只想用特定的方式填充imageview和textview图像和文字。

有人可以告诉我如何在OnPostMethod中设置图像。我想知道是否有人可以在下面的代码中告诉我我犯的错误

 public class testing_async extends Activity {

    private ProgressDialog progressDialog;
    String s;
    ImageView im;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.testing_async);
        new GetCategoryList().execute(s);
        im = (ImageView) findViewById(R.id.im1);

    }

    //
    // THE AsyncTask Class for GetCategoryList....
    //
    class GetCategoryList extends AsyncTask<String, String, String> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            // showDialog(progress_bar_type);
            progressDialog = ProgressDialog.show(testing_async.this, "",
                    "Loading...");
        }

        @Override
        protected String doInBackground(String... f_url) {

            /*
             * LinearLayout layout = new LinearLayout(testing_async.this);
             * layout = new LinearLayout(testing_async.this);
             * layout.setLayoutParams(new ViewGroup.LayoutParams(
             * ViewGroup.LayoutParams.FILL_PARENT,
             * ViewGroup.LayoutParams.FILL_PARENT));
             * 
             * RelativeLayout inner_layout = new
             * RelativeLayout(testing_async.this); inner_layout = new
             * RelativeLayout(testing_async.this); layout.setLayoutParams(new
             * ViewGroup.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT,
             * ViewGroup.LayoutParams.FILL_PARENT));
             * 
             * ImageView im = new ImageView(testing_async.this);
             * im.setImageResource(R.drawable.logo_background);
             * RelativeLayout.LayoutParams layoutParams90 = new
             * RelativeLayout.LayoutParams( 225, 250); layoutParams90.leftMargin
             * = 45; layoutParams90.topMargin = 45;
             * im.setLayoutParams(layoutParams90); inner_layout.addView(im);
             * layout.addView(inner_layout);
             */
            return null;

        }

        protected void onProgressUpdate(String... progress) {

        }

        @Override
        protected void onPostExecute(String file_url) {

            im.setBackgroundResource(R.drawable.back);
            progressDialog.dismiss();

        }

    }

}

2 个答案:

答案 0 :(得分:0)

Context mContext;
ImageView im;

public GetCategoryList(Context context, ImageView myIm) {

 this.mContext = context;
 this.im = myIml;

}

将上面的自定义构造函数添加到异步任务中。这样您就有了一个上下文和对imageView的引用。需要它才能获得资源。

其次,所有注释的代码都应放在&#34; onCreate&#34;。

最后,您可以使用

为imageView指定一个drawable
im.setBackgroundResource(mContext.getResources().getDrawable(R.drawable.bBack));

希望这有帮助。

P.S。切勿在&#34; doInBackground&#34;中更改布局。你的应用程序会崩溃。

答案 1 :(得分:-2)

如果您正在设置图片

然后你必须给im.setBackgroundResource(R.drawable.bBack);

您在代码中设置了id而不是图像。