0

「バックグラウンドで実行」メソッドでいくつかのネットワーク操作を行っているように、AsyncClass の OnPostMethod で imageview と textview に画像とテキストを設定したいのですが、特定の応答で imageviews と textviews に特定の画像とテキストを入力したいだけです.

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();

        }

    }

}
4

2 に答える 2

0
Context mContext;
ImageView im;

public GetCategoryList(Context context, ImageView myIm) {

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

}

上記のカスタム コンストラクターを非同期タスクに追加します。このようにして、コンテキストと imageView への参照を取得します。リソースを取得するために必要になります。

次に、コメント化されたすべてのコードを「onCreate」内に配置する必要があります。

最後に、次を使用して imageView にドローアブルを割り当てることができます

im.setBackgroundResource(mContext.getResources().getDrawable(R.drawable.bBack));

お役に立てれば。

PS 「doInBackground」でレイアウトを変更しないでください。アプリがクラッシュします。

于 2014-03-19T12:51:35.393 に答える
-2

画像を設定する場合

その後、あなたは与える必要がありますim.setBackgroundResource(R.drawable.bBack);

コードで画像ではなくIDを設定しています。

于 2012-11-01T09:23:42.280 に答える