1
public class TopMovie extends Activity 
{

    GridView lv;

    Vibrator vibrator;
    private Object params;
    public static String movie_Id;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        Log.i("Category", MainActivity.movie_Category);
        setContentView(R.layout.new_movie);
        LayoutInflater inflater = getLayoutInflater();
        View view = inflater.inflate(R.layout.customtoast,
                (ViewGroup) findViewById(R.id.custom_toast_layout));
        Toast toast = new Toast(getApplicationContext());
        toast.setDuration(Toast.LENGTH_LONG);
        toast.setGravity(Gravity.CENTER_HORIZONTAL, 0, 0);
        toast.setView(view);
        toast.show();

        vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
        lv = (GridView) findViewById(R.id.grid_view);

        // URL to the JSON data
        String strUrl = "http://vaibhavtech.com/work/android/movie_list.php?category="
                + MainActivity.movie_Category + "&sub_category=other";
        DownloadTask downloadTask = new DownloadTask();
        downloadTask.execute(strUrl);
        lv.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                // // TODO Auto-generated method stub
                vibrator.vibrate(40);
                LayoutInflater inflater = getLayoutInflater();
                View view = inflater.inflate(R.layout.customtoast,
                        (ViewGroup) findViewById(R.id.custom_toast_layout));
                Toast toast = new Toast(getApplicationContext());
                toast.setDuration(Toast.LENGTH_LONG);
                toast.setGravity(Gravity.CENTER_HORIZONTAL, 0, 0);
                toast.setView(view);
                toast.show();
                MainActivity.movie_Id = ((TextView) arg1
                        .findViewById(R.id.tv_girdview_content_id)).getText()
                        .toString();
                Log.i("Name is", MainActivity.movie_Id);
                startActivity(new Intent(TopMovie.this, MovieDescription.class));
            }
        });
    }

    private String downloadUrl(String strUrl) throws IOException {
        String data = "";
        InputStream iStream = null;
        try {
            URL url = new URL(strUrl);

            // Creating an http connection to communicate with url
            HttpURLConnection urlConnection = (HttpURLConnection) url
                    .openConnection();

            // Connecting to url
            urlConnection.connect();

            // Reading data from url
            iStream = urlConnection.getInputStream();

            BufferedReader br = new BufferedReader(new InputStreamReader(
                    iStream));

            StringBuffer sb = new StringBuffer();

            String line = "";
            while ((line = br.readLine()) != null) {
                sb.append(line);
            }

            data = sb.toString();

            br.close();

        } catch (Exception e) {
            Log.d("Exception while downloading url", e.toString());
        } finally {
            iStream.close();
        }

        return data;
    }

    /** AsyncTask to download json data */
    private class DownloadTask extends AsyncTask<String, Integer, String> {
        String data = null;

        @Override
        protected String doInBackground(String... url) {
            try {
                data = downloadUrl(url[0]);

            } catch (Exception e) {
                Log.d("Background Task", e.toString());
            }
            return data;
        }

        @Override
        protected void onPostExecute(String result) {

            // The parsing of the xml data is done in a non-ui thread
            ListViewLoaderTask listViewLoaderTask = new ListViewLoaderTask();

            // Start parsing xml data
            listViewLoaderTask.execute(result);

        }
    }

    /** AsyncTask to parse json data and load ListView */
    private class ListViewLoaderTask extends
            AsyncTask<String, Void, SimpleAdapter> {

        JSONObject jObject;

        // Doing the parsing of xml data in a non-ui thread
        @Override
        protected SimpleAdapter doInBackground(String... strJson) {
            try {
                jObject = new JSONObject(strJson[0]);
                MovieParser countryJsonParser = new MovieParser();
                countryJsonParser.parse(jObject);
            } catch (Exception e) {
                Log.d("JSON Exception1", e.toString());
            }

            // Instantiating json parser class
            MovieParser countryJsonParser = new MovieParser();

            // A list object to store the parsed countries list
            List<HashMap<String, Object>> countries = null;

            try {
                // Getting the parsed data as a List construct
                countries = countryJsonParser.parse(jObject);
            } catch (Exception e) {
                Log.d("Exception", e.toString());
            }

            // Keys used in Hashmap
            String[] from = { "image", "id", "year", "duration", "name" };

            // Ids of views in listview_layout
            // int[] to = {
            // R.id.iv_radio_data_image,R.id.tv_radio_data_id,R.id.tv_radio_data_like,R.id.tv_radio_data_rating,R.id.tv_radio_data_listner,R.id.tv_radio_data_radio_url,R.id.tv_radio_data_name};
            int[] to = { R.id.iv_girdview_content_image,
                    R.id.tv_girdview_content_id, R.id.tv_girdview_content_like,
                    R.id.tv_girdview_content_listner,
                    R.id.tv_girdview_content_name };

            SimpleAdapter adapter = new SimpleAdapter(getBaseContext(),
                    countries, R.layout.grid_view_content, from, to);

            return adapter;
        }

        /** Invoked by the Android on "doInBackground" is executed */
        @Override
        protected void onPostExecute(SimpleAdapter adapter) {

            // Setting adapter for the listview
            lv.setAdapter(adapter);

            for (int i = 0; i < adapter.getCount(); i++) {
                HashMap<String, Object> hm = (HashMap<String, Object>) adapter
                        .getItem(i);
                String imgUrl = (String) hm.get("flag_path");
                ImageLoaderTask imageLoaderTask = new ImageLoaderTask();

                HashMap<String, Object> hmDownload = new HashMap<String, Object>();
                hm.put("flag_path", imgUrl);
                hm.put("position", i);

                // Starting ImageLoaderTask to download and populate image in
                // the listview
                imageLoaderTask.execute(hm);
            }

        }
    }

    /** AsyncTask to download and load an image in ListView */
    private class ImageLoaderTask extends
            AsyncTask<HashMap<String, Object>, Void, HashMap<String, Object>> {

        @Override
        protected HashMap<String, Object> doInBackground(
                HashMap<String, Object>... hm) {

            InputStream iStream = null;
            String imgUrl = (String) hm[0].get("flag_path");
            int position = (Integer) hm[0].get("position");

            URL url;
            try {
                url = new URL(imgUrl);

                // Creating an http connection to communicate with url
                HttpURLConnection urlConnection = (HttpURLConnection) url
                        .openConnection();

                // Connecting to url
                urlConnection.connect();

                // Reading data from url
                iStream = urlConnection.getInputStream();

                // Getting Caching directory
                File cacheDirectory = getBaseContext().getCacheDir();

                // Temporary file to store the downloaded image
                File tmpFile = new File(cacheDirectory.getPath() + "/wpta_"
                        + position + ".png");

                // The FileOutputStream to the temporary file
                FileOutputStream fOutStream = new FileOutputStream(tmpFile);

                // Creating a bitmap from the downloaded inputstream
                Bitmap b = BitmapFactory.decodeStream(iStream);

                // Writing the bitmap to the temporary file as png file
                b.compress(Bitmap.CompressFormat.PNG, 100, fOutStream);

                // Flush the FileOutputStream
                fOutStream.flush();

                // Close the FileOutputStream
                fOutStream.close();

                // Create a hashmap object to store image path and its position
                // in the listview
                HashMap<String, Object> hmBitmap = new HashMap<String, Object>();

                // Storing the path to the temporary image file
                hmBitmap.put("image", tmpFile.getPath());

                // Storing the position of the image in the listview
                hmBitmap.put("position", position);

                // Returning the HashMap object containing the image path and
                // position
                return hmBitmap;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(HashMap<String, Object> result) {
            // Getting the path to the downloaded image
            String path = (String) result.get("image");

            // Getting the position of the downloaded image
            int position = (Integer) result.get("position");

            // Getting adapter of the listview
            SimpleAdapter adapter = (SimpleAdapter) lv.getAdapter();

            // Getting the hashmap object at the specified position of the
            // listview
            HashMap<String, Object> hm = (HashMap<String, Object>) adapter
                    .getItem(position);

            // Overwriting the existing path in the adapter
            hm.put("image", path);
            adapter.notifyDataSetChanged();
        }

    }

}

My application is debugging but not running.RejectedExecutionException: Task android.os.AsyncTas rejected from java.util.concurrent. Submitting tasks to a thread-pool gives RejectedExecutionException how to resolve threadpool exception in gridview android

Community
  • 1
  • 1
Rajshree Tiwari
  • 630
  • 1
  • 7
  • 27
  • Welcome to SO. Please read the [FAQ] to get an idea how to ask a good question. Please provide the stacktrace of your error! Also invest time to format your post on your own next time. – WarrenFaith Oct 25 '13 at 11:20

1 Answers1

1

You can change the executor the asynctask uses if you extend the asynctask class.

Check this example from docs where they download multiple images and use a custom asynctask to control the concurrency.

I had the same problem you are having and used that project to fix it.

Mikel
  • 1,581
  • 17
  • 35
  • i am new in this and i am unableto understand where and how to us easynck code. – Rajshree Tiwari Oct 26 '13 at 03:39
  • Check that project, see how they use Asynctask. Then do the same. Copy that class to your project and use that class instead of the one in Android. Then tune it up as you need... – Mikel Oct 26 '13 at 17:35