开发者

Error when retrieving image url?

开发者 https://www.devze.com 2023-03-22 00:30 出处:网络
I keep getting a error at @Override protected Void doInBackground(Void... arg0) { ((Gallery) findViewById(R.id.gallery))

I keep getting a error at

@Override
                protected Void doInBackground(Void... arg0) {
                    ((Gallery) findViewById(R.id.gallery))
                            .setAdapter(new ImageAdapter(this));
                        return null;
                }

                        }

I get a syntax error at (new imageAdapter(this));

I dont know what. im guessing it has something to do with its context??

But here is the full code im using.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    myGames = (Button)findViewById(R.id.myGames);
    newRelease = (Button)findViewById(R.id.newRelease);
    gameNews = (Button)findViewById(R.id.news);
    gameNews.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent i = new Intent(MainMenu.this, GameNews.class);
            startActivity(i);

        }
    }); MyTask myTask = new MyTask();

    myTask.execute();

}


public void getImages() throws IOException{

    DefaultHttpClient httpclient = new DefaultHttpClient();

    HttpGet httppost = new HttpGet("https://sites.google.com/site/theitrangers/images/webImages.txt");
    HttpResponse response;

        response = httpclient.execute(httppost);


            HttpEntity ht = response.getEntity();

            BufferedHttpEntity buf = new BufferedHttpEntity(ht);

            InputStream is = buf.getContent();


            BufferedReader r = new BufferedReader(new InputStreamReader(is));

            StringBuilder total = new StringBuilder();
            String line;
            while ((line = r.readLine()) != null) {
                total.append(line + "\n");

              imageUrl = total.toString();
              Log.v("getImage2", "Retreived image");
            }

            }
            public void getImage2() throws IOException{

                DefaultHttpClient httpclient = new DefaultHttpClient();

                HttpGet httppost = new HttpGet("https://sites.google.com/site/theitrangers/images/webImage2.txt");
                HttpResponse response;


             开发者_如何转开发       response = httpclient.execute(httppost);


                        HttpEntity ht = response.getEntity();

                        BufferedHttpEntity buf = new BufferedHttpEntity(ht);

                        InputStream is = buf.getContent();


                        BufferedReader r = new BufferedReader(new InputStreamReader(is));

                        StringBuilder total = new StringBuilder();
                        String line;
                        while ((line = r.readLine()) != null) {
                            total.append(line + "\n");

                          imageUrl2 = total.toString();
                          Log.v("getImage2", "Retreived image");
                        }

}
            public class ImageAdapter extends BaseAdapter {
                /** The parent context */
                private Context myContext;public ImageAdapter() {
                    // TODO Auto-generated constructor stub
                }
                /** URL-Strings to some remote images. */

                private String[] myRemoteImages = {imageUrl,imageUrl2};






                /** Simple Constructor saving the 'parent' context. */
                public ImageAdapter(Context c) { this.myContext = c; }





                /** Returns the amount of images we have defined. */
                public int getCount() { return this.myRemoteImages.length; }

                /* Use the array-Positions as unique IDs */
                public Object getItem(int position) { return position; }
                public long getItemId(int position) { return position; }

                /** Returns a new ImageView to
                * be displayed, depending on
                * the position passed. */
                public View getView(int position, View convertView, ViewGroup parent) {
                ImageView i = new ImageView(this.myContext);

                try {
                                /* Open a new URL and get the InputStream to load data from it. */
                                URL aURL = new URL(myRemoteImages[position]);
                                URLConnection conn = aURL.openConnection();
                                conn.connect();

                                InputStream is = conn.getInputStream();  
                                /* Buffered is always good for a performance plus. */
                                BufferedInputStream bis = new BufferedInputStream(is);
                                /* Decode url-data to a bitmap. */
                                Bitmap bm = BitmapFactory.decodeStream(bis);
                                bis.close();
                                is.close();
                                Log.v(imageUrl, "Retrieving image");

                                /* Apply the Bitmap to the ImageView that will be returned. */
                                i.setImageBitmap(bm);
                        } catch (IOException e) {

                                Log.e("DEBUGTAG", "Remtoe Image Exception", e);
                        }

                /* Image should be scaled as width/height are set. */
                i.setScaleType(ImageView.ScaleType.FIT_CENTER);
                /* Set the Width/Height of the ImageView. */
                i.setLayoutParams(new Gallery.LayoutParams(150, 150));
                return i;
                }

                /** Returns the size (0.0f to 1.0f) of the views
                * depending on the 'offset' to the center. */
                public float getScale(boolean focused, int offset) {
                /* Formula: 1 / (2 ^ offset) */
                return Math.max(0, 1.0f / (float)Math.pow(2, Math.abs(offset)));
                }
                }






                private class MyTask extends AsyncTask<Void, Void, Void>{

                protected void onPreExecute(){
                    try {
                            getImages();
                            Log.v("MyTask", "Image 1 retreived");
                            getImage2();
                            Log.v("MyTask", "Image 2 retreived");
                        } catch (IOException e) {
                            Log.e("MainMenu retreive image", "Image Retreival failed");
                            e.printStackTrace();
                        }

                }

                @Override
                protected Void doInBackground(Void... arg0) {
                    ((Gallery) findViewById(R.id.gallery))
                            .setAdapter(new ImageAdapter(this));
                        return null;
                }

                        }

}


Ah!! Syntax Error?? Well, remove this, and try MainMenu.this.


this in the context you are calling it is not referring to the Activity as you are expecting it to, as does the ImageAdapter expects, but instead it is referring to the AsyncTask instance.

You should probably build a data structure of some kind and then return it in your AsyncTask.onPostExecute. Then call back to a method in your Activity, at which point you have full access to the ApplicationContext

0

精彩评论

暂无评论...
验证码 换一张
取 消