title: ClassCastException: android.app.Application cannot be cast to android.app.Activity
body: <p>I have an activity class along with customlistadapter inside <strong>customlist adapter</strong>.<br>
   I have a thread <code>runouithread</code> which give me error msg when i wrap it with <code>((Activity) context).runOnUiThread(new Runnable()</code>.<br>
  it throws the error msg at runtime has <code>ClassCastException: android.app.Application cannot be cast to android.app.Activity</code>.<br>
   So please some one help me.</p>
  
  <pre><code>public class CustomListAdapterfriend extends BaseAdapter  {
  List&lt;HashMap&lt;String, Object&gt;&gt; models; 
     Context context;
  LayoutInflater inflater;
  
  URL urll;
  HttpURLConnection connection;
  
    InputStream input;
  
    ViewHolder viewHolder;
  //UI for Locations
  ImageView pic,image,delam;
  TextView name,timestamp,msg,url,idas,idas2,emasr,cn;
  ArrayList&lt;String&gt; listItems;
  ListView lv;
  public int count1 = 0;
   ProgressDialog pDialog;
  //String session_email="",session_type="",share_app,share_via;
  private String stringVal;
  private int mCounter1=1;
  private int counter=0;
  public int temp=0;
  String con, pros;
  private int[] counters;
  int pos;
  int width,height;
  int position2;
   String id,emm;
  Transformation transformation;
  //ImageButton sharingButton;
  String pacm,session_email,session_ph,session_type,session_loc,connter;
  ArrayList&lt;HashMap&lt;String, Object&gt;&gt; usersList,usersList1;
  JSONParser jParser = new JSONParser();
  int i ;
  
  
  
  JSONParser jsonParser = new JSONParser();
  static String IP = IpAddress.Ip;
  private String imagePath = IP+"/social/upload/";
  //url to create new product
  public static String add_wish = IP+"/studio/add_wishlist.php";
  private static String url_all_properties5 = IP+"/social/get_all_agen_like.php";
  private static String url_all_properties1 = IP+"/social/get_lik_coun.php";
  private static String url_all_properties6 = IP+"/social/get_all_agen_like3.php";
  private static String url_all_properties7 = IP+"/social/get_all_dele_like.php";
  private static String url_all_properties8 = IP+"/social/get_all_dele_uplike.php";
    boolean isSelected;
    int a,a1,b,b1;
  
      //private static final String TAG_SUCCESS1 = "mass";
      private static final String TAG_USER = "users";
  
      private static final String TAG_PRO = "properties";
      //private static final String TAG_PRO1 = "properties1";
      // products JSONArray
      JSONArray users = null;
      //JSONArray users1 = null;
       View view;
  
      // JSON Node names
      private static final String TAG_SUCCESS = "success";
   SharedPreferences sPref;
  // int position;
  
  
  public CustomListAdapterfriend(Context context, List&lt;HashMap&lt;String, Object&gt;&gt; models) {
      this.context = context;
      this. models = models;
      inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
      this.counters = new int[30];
  
      //this.session_email = sPref.getString("SESSION_UID","");
  
  }
  
  public class ViewHolder {
  
         public TextView countt,idas5,emasr,cn;
  
        // public String id,emm;
  
         public  ImageView like;
         public ImageView share;
      /*public void runOnUiThread(Runnable runnable) {
          // TODO Auto-generated method stub
  
      }*/
  
  
  
      }
  
  public void clear(){
      if(models!=null)
          models.clear();
  }
  
  @Override
  public int getCount() {
      return models.size();
  }
  
  public HashMap&lt;String, Object&gt; getItem(int position) {
      return models.get(position);
  
  }
  
  @Override
  public long getItemId(int position) {
      return position;
  }
  
  @Override
  public int getItemViewType(int position) {
      // TODO Auto-generated method stub
      return position;
  } 
  
  @Override
  public int getViewTypeCount() {
      // TODO Auto-generated method stub
      return 1;
  }
  
  @Override
  public View getView( final int position, final View convertView,  ViewGroup parent) {
          //  view = null;
        view = convertView;
  
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
          StrictMode.setThreadPolicy(policy); 
  
            sPref= context.getSharedPreferences("REAL", Context.MODE_PRIVATE);
  
          session_email = sPref.getString("SESSION_UID","");
          session_ph = sPref.getString("SESSION_PH","");
          session_type = sPref.getString("SESSION_TYPE", "");
          session_loc = sPref.getString("SESSION_LOC", "");
        //  lv=(ListView)view.findViewById(R.id.list);
          pos = getItemViewType(position);
        //  long posn = getItemId(position);
       // final int paps= (int)posn ;
          if (view == null) {
              viewHolder = new ViewHolder();
              view = inflater.inflate(R.layout.fragment_home2, parent, false);
              //your code
  
  
  
  
              //add below code after (end of) your code
              viewHolder.idas5 = (TextView) view.findViewById(R.id.hpid);
              viewHolder. emasr= (TextView) view.findViewById(R.id.ema);
              viewHolder.like=(ImageView)view.findViewById(R.id.likem);
  
              viewHolder.share=(ImageView)view.findViewById(R.id.sharemsp);
  
              viewHolder.cn = (TextView) view.findViewById(R.id.count);
  
  
              viewHolder.share.setOnClickListener(new View.OnClickListener() {
                  @Override
                  public void onClick(View v) {
  
                       int position = (Integer) v.getTag();
  
  
  
                        HashMap&lt;String, Object&gt; item = models.get(position);
                        String imagePath = (String)item.get("IMAGE").toString();
  
                      try {
                          urll = new URL(imagePath);
                      } catch (MalformedURLException e) {
                          // TODO Auto-generated catch block
                          e.printStackTrace();
                      }
  
  
                      try {
                          connection = (HttpURLConnection) urll.openConnection();
                      } catch (IOException e) {
                          // TODO Auto-generated catch block
                          e.printStackTrace();
                      }
  
                        connection.setDoInput(true);
  
                        try {
                          connection.connect();
                      } catch (IOException e) {
                          // TODO Auto-generated catch block
                          e.printStackTrace();
                      }
  
                      try {
                          input = connection.getInputStream();
                      } catch (IOException e) {
                          // TODO Auto-generated catch block
                          e.printStackTrace();
                      }
  
                        Bitmap immutableBpm = BitmapFactory.decodeStream(input);
  
                        if(immutableBpm !=null)
                        {
  
                        Bitmap mutableBitmap = immutableBpm.copy(Bitmap.Config.ARGB_8888, true);
  
  
  
                        View view  = new View(context);
  
                        view.draw(new Canvas(mutableBitmap));
  
                        String path = Images.Media.insertImage(context.getContentResolver(), mutableBitmap, "Nur", null);
                        Uri uri = Uri.parse(path);
  
  
                       /* image = (ImageView) view.findViewById(R.id.feedImage1);
                        Drawable mDrawable = image.getDrawable();
                        Bitmap mBitmap = ((BitmapDrawable)mDrawable).getBitmap();
                        Intent share = new Intent(Intent.ACTION_SEND);
                        share.setType("image/*");
                        String path = Images.Media.insertImage(getContentResolver(), mBitmap, "Image Description", null);
  
                        Uri uri = Uri.parse(path);*/
                        Intent share = new Intent(Intent.ACTION_SEND);
                        share.setType("image/*");
                        share.putExtra(Intent.EXTRA_STREAM, uri);
  
                        context.startActivity(Intent.createChooser(share, "Share Image!"));
                        }
                        else
                        {
  
                            Toast.makeText(context, "No image to share", Toast.LENGTH_LONG).show();
  
                        }
  
                  }
  
  
              });
  
  
             // viewHolder.share.setOnItemClickListener(this);
  
  
              viewHolder.like.setBackgroundResource(R.drawable.like1);
  
              viewHolder.like.setOnClickListener(new View.OnClickListener() {
                  @Override
                  public void onClick(View v) {
                      int position = (Integer) v.getTag();
                     // viewHolder.countt = (TextView) v.findViewById(R.id.count);
                      HashMap&lt;String, Object&gt; item = models.get(position);
  
                      viewHolder.idas5.setText((CharSequence) item.get("UIDAS"));
  
                      // id=(String) viewHolder.idas5.getText();
                       viewHolder.emasr.setText((CharSequence) item.get("EMAILM"));
  
                          id=(String) viewHolder.idas5.getText();
  
                          emm=(String) viewHolder.emasr.getText();
  
  
  
                           new LoadAllProducts().execute(); 
  
  
                            new LoadAllProducts22().execute(); 
  
  
                            notifyDataSetChanged();
  
  
  
  
                      /*if( viewHolder.like.isSelected()){
                           viewHolder.like.setSelected(false);
                          //viewHolder.like.setBackgroundResource(R.drawable.like2);
  
                           new LoadAllProducts7().execute(); 
                           new LoadAllProducts22().execute();
                           notifyDataSetChanged();
                       }
  
  
                       else if(!viewHolder.like.isSelected()){
                           viewHolder.like.setSelected(true);
                              //ctv.setBackgroundColor (Color.parseColor("#d2d0d0"));
                          // viewHolder.like.setBackgroundResource(R.drawable.like1);
  
                              new LoadAllProducts().execute(); 
                                new LoadAllProducts22().execute(); 
                                notifyDataSetChanged();
  
                       }*/
  
  
                  }
              });
              view.setTag(viewHolder);
  
          } else {
             viewHolder = (ViewHolder) view.getTag();
          }
  
  
          viewHolder.like.setTag(position);  
           viewHolder.share.setTag(position);
  
  
  
  
  
       final HashMap&lt;String, Object&gt; item = getItem(position);
     /*         name.setText(((String)item.get(R.id.name)));
       * 
      * 
      */        
       new LoadAllProducts78().execute(); 
  
  
     //  boolean  isSelected = (Boolean) item.get("selected");
  
  
  
  
  
         /*if (viewHolder.like.isSelected()) {
  
           viewHolder.like.setSelected(false);
           viewHolder.like.setBackgroundResource(R.drawable.like2);
  
  
  
  
  
         } else if (!viewHolder.like.isSelected()){
  
           viewHolder.like.setSelected(true);
              //ctv.setBackgroundColor (Color.parseColor("#d2d0d0"));
           viewHolder.like.setBackgroundResource(R.drawable.like1);
  
  
  
         }  */
  
  
  
  
       pic = (ImageView) view.findViewById(R.id.profilePic);
       name = (TextView) view.findViewById(R.id.name);
       idas = (TextView) view.findViewById(R.id.hpid);
  
       idas2 = (TextView) view.findViewById(R.id.hpid2);
       timestamp = (TextView) view.findViewById(R.id.timestamp);
       msg = (TextView) view.findViewById(R.id.txtStatusMsg);
       url = (TextView) view.findViewById(R.id.txtUrl);
       image = (ImageView) view.findViewById(R.id.feedImage1);
  
  
  
       idas.setText((CharSequence) item.get("UIDAS"));
  
       viewHolder.cn.setText((CharSequence) item.get("COUN"));
      // listItems.add(idas.getText().toString());
       name.setText((CharSequence) item.get("NAME"));
       timestamp.setText((CharSequence) item.get("TIME"));
       msg.setText((CharSequence) item.get("MSG"));
       url.setText((CharSequence) item.get("URL"));
  
  
  
  
  
  
  
  
  
       //countt.setText((CharSequence) item.get("COUN"));
       //count.setText("" + count1);
  
  
       int w = image.getWidth();
       int h = image.getHeight();
  
       if (w &gt; 1000)
       {
            a=w-1000;
            b=w-a;
       }
  
       else
       {
           b=w;
       }
  
  
       if (h &gt; 1000)
       {
            a1=h-1000;
            b1=h-a1;
       }
  
       else
       {
           b1=h;
       }
  
          Picasso.with(context)
          //.load("PIC")
       .load((String)item.get("PIC"))
          .placeholder(R.drawable.profile_dummy)
          //.error(R.drawable.ic_whats_hot)
          .resize(50, 50)
        // .centerCrop()
         // .fit()
          .into(pic);
  
  
  
          /*Display display =  getActivity().getWindowManager().
              getDefaultDisplay();                                                                                                                
          Point size = new Point();
          display.getSize(size); 
          int width = size.x;*/
  
  
  
       Picasso.with(context)
       .load((String)item.get("IMAGE"))
  
      //.load("IMAGE")
      // .placeholder(R.drawable.ic_pages)
       //.error(R.drawable.ic_home)
        .resize(1000,image.getHeight())
          .onlyScaleDown()
         //.centerCrop()
        // .fit().centerInside()
       .into(image);
  
  
  
  
  
  
  
  
  
          return view;
          }
  
         protected ContentResolver getContentResolver() {
          // TODO Auto-generated method stub
         return null;
          }
  
  
            class LoadAllProducts extends AsyncTask&lt;String, String, String&gt; {
  
  
  
      @Override
      protected void onPreExecute() {
          super.onPreExecute();
  
          /*pDialog = new ProgressDialog(context);
          pDialog.setMessage("Loading.. Please wait...");
          pDialog.setIndeterminate(false);
          pDialog.setCancelable(false);
          pDialog.show();*/
  
  
  
          /*Runnable progressRunnable = new Runnable() {
  
              @Override
              public void run() {
                  pDialog.cancel();
              }
          };
  
          Handler pdCanceller = new Handler();
          pdCanceller.postDelayed(progressRunnable, 3000);*/
  
      }
  
      /**
       * getting All products from url
       * */
      protected String doInBackground(String... args) {
          // Building Parameters
        //  session_email = sPref.getString("SESSION_UID","");
  
          usersList = new ArrayList&lt;HashMap&lt;String, Object&gt;&gt;();
          //usersList1 = new ArrayList&lt;HashMap&lt;String, Object&gt;&gt;();
  
  
          // id=(String) viewHolder.idas5.getText();
  
          ((Activity) context).runOnUiThread(new Runnable() {
               @Override
               public void run() {
  
              try {
          List&lt;NameValuePair&gt; params = new ArrayList&lt;NameValuePair&gt;();
  
  
  
              params.add(new BasicNameValuePair("email", session_email));
              params.add(new BasicNameValuePair("loc", "liked"));
              params.add(new BasicNameValuePair("con", "1"));
              params.add(new BasicNameValuePair("idtes", id));
              params.add(new BasicNameValuePair("emas", emm));
  
  
              JSONObject json = jParser.makeHttpRequest(url_all_properties5,                "GET", params);
  
               if (json != null) {
  
              // Check your log cat for JSON reponse
              Log.d("All start: ", json.toString());
              // Checking for SUCCESS TAG
  
              int success = json.getInt(TAG_SUCCESS);
  
  
  
              if (success== 1) {
  
  
  
                  Log.d("Inside success...", json.toString());
                  connter = json.getString("loca");
  
  
                  Intent intent = ((Activity) context).getIntent();
                   intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
                   sPref.edit().putString("SESSION_UID", session_email).commit();
                      sPref.edit().putString("SESSION_TYPE", session_type).commit();
                      sPref.edit().putString("SESSION_PH", session_ph).commit();
                      sPref.edit().putString("SESSION_LOC", session_loc).commit();
                      ((Activity) context).finish();
                      ((Activity) context).overridePendingTransition(0, 0);
                      ((Activity) context).startActivity(intent);
                   ((Activity) context).overridePendingTransition(0, 0);
  
  
                  //Toast.makeText(context, "Already liked", Toast.LENGTH_LONG).show();
  
  
  
              } 
  
              else if (success== 5){
                  // no products found
  
  
                  Toast.makeText(context, "Already liked", Toast.LENGTH_LONG).show();
  
  
              }
  
  
               } else {
  
  
  
                  }
              } catch (JSONException e) {
                  e.printStackTrace();
              }
  
               }
          }); 
  
  
          return null;
      }
  
  
      /**
       * After completing background task Dismiss the progress dialog
       * **/
      protected void onPostExecute(String file_url) {
          // dismiss the dialog after getting all products
          //pDialog.dismiss();
          // updating UI from Background Thread
  
  
      //  pDialog.dismiss();
  
      }
  
  
  
  
  
  }
  
  
  
  
  
  
  
           class LoadAllProducts78 extends AsyncTask&lt;String, String, String&gt; {
  
  
  
  @Override
  protected void onPreExecute() {
      super.onPreExecute();
  
      /*pDialog = new ProgressDialog(Friendsprofile.this);
      pDialog.setMessage("Loading.. Please wait...");
      pDialog.setIndeterminate(false);
      pDialog.setCancelable(false);
      pDialog.show();
      */
  
  
      /*Runnable progressRunnable = new Runnable() {
  
          @Override
          public void run() {
              pDialog.cancel();
          }
      };
  
      Handler pdCanceller = new Handler();
      pdCanceller.postDelayed(progressRunnable, 3000);*/
  
  }
  
  /**
   * getting All products from url
   * */
  protected String doInBackground(String... args) {
      // Building Parameters
    //  session_email = sPref.getString("SESSION_UID","");
  
      //usersList = new ArrayList&lt;HashMap&lt;String, Object&gt;&gt;();
      //usersList1 = new ArrayList&lt;HashMap&lt;String, Object&gt;&gt;();
  
  
      // id=(String) viewHolder.idas5.getText();
  
      ((Activity) context).runOnUiThread(new Runnable() {
  
          @Override
          public void run() {
              // TODO Auto-generated method stub  
  
              try {
  
  
      List&lt;NameValuePair&gt; params = new ArrayList&lt;NameValuePair&gt;();
  
  
  
          params.add(new BasicNameValuePair("email", session_email));
  
          params.add(new BasicNameValuePair("emas", emm));
  
  
          JSONObject json = jParser.makeHttpRequest(url_all_properties6, "POST", params);
  
           if (json != null) {
  
          // Check your log cat for JSON reponse
          Log.d("All bastart: ", json.toString());
          // Checking for SUCCESS TAG
  
          int success = json.getInt(TAG_SUCCESS);
  
  
  
          if (success== 1) {
  
  
              viewHolder.like.setBackgroundResource(R.drawable.like1);
              viewHolder.like.setSelected(true);
  
  
  
  
          } 
  
          else if(success == 2) {
  
              viewHolder.like.setBackgroundResource(R.drawable.like2);
          }
  
  
           } else {
  
  
  
              }
  
          } catch (JSONException e) {
              e.printStackTrace();
          }
  
     }
     });
  
  
  
      return null;
  }
  
  
  /**
   * After completing background task Dismiss the progress dialog
   * **/
  protected void onPostExecute(String file_url) {
      // dismiss the dialog after getting all products
      //pDialog.dismiss();
      // updating UI from Background Thread
  
  
      //pDialog.dismiss();
  
  }
  
  
  
  
  
      }
  
  
  
  
  
  
  
  
  
  
  
  
       class LoadAllProducts22 extends AsyncTask&lt;String, String, String&gt; {
  
  
  
  @Override
  protected void onPreExecute() {
      super.onPreExecute();
      /*
      pDialog = new ProgressDialog(context);
      pDialog.setMessage("Loading.. Please wait...");
      pDialog.setIndeterminate(false);
      pDialog.setCancelable(false);
      pDialog.show();
  
  
  
      Runnable progressRunnable = new Runnable() {
  
          @Override
          public void run() {
              pDialog.cancel();
          }
      };
  
      Handler pdCanceller = new Handler();
      pdCanceller.postDelayed(progressRunnable, 3000);*/
  
  }
  
  /**
   * getting All products from url
   * */
  protected String doInBackground(String... args) {
      // Building Parameters
    //  session_email = sPref.getString("SESSION_UID","");
  
  
  
      List&lt;NameValuePair&gt; params = new ArrayList&lt;NameValuePair&gt;();
  
  
  
  
  
          JSONObject json = jParser.makeHttpRequest(url_all_properties1, "GET", params);
  
           if (json != null) {
  
          // Check your log cat for JSON reponse
          Log.d("All Productgetting start: ", json.toString());
          // Checking for SUCCESS TAG
          try {
          int success = json.getInt(TAG_SUCCESS);
  
  
  
          if (success== 1) {
  
  
  
          } 
  
          else {
              // no products found
              // Launch Add New product Activity
              /*Intent i = new Intent(getApplicationContext(),    MainActivity.class);
              // Closing all previous activities
              i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
              startActivity(i);*/
          }
  
           } catch (JSONException e) {
                  e.printStackTrace();
              }
           } else {
  
  
  
              }
  
  
  
  
  
      return null;
  }
  
  
  
  /**
   * After completing background task Dismiss the progress dialog
   * **/
  protected void onPostExecute(String file_url) {
      // dismiss the dialog after getting all products
      //pDialog.dismiss();
      // updating UI from Background Thread
  
  
  
  
  }
  
  
  
  
  
       }
  
  
  
  
          class LoadAllProducts7 extends AsyncTask&lt;String, String, String&gt; {
  
  
  
  @Override
  protected void onPreExecute() {
      super.onPreExecute();
      /*
      pDialog = new ProgressDialog(context);
      pDialog.setMessage("Loading.. Please wait...");
      pDialog.setIndeterminate(false);
      pDialog.setCancelable(false);
      pDialog.show();
  
  
  
      Runnable progressRunnable = new Runnable() {
  
          @Override
          public void run() {
              pDialog.cancel();
          }
      };
  
      Handler pdCanceller = new Handler();
      pdCanceller.postDelayed(progressRunnable, 3000);*/
  
  }
  
  /**
   * getting All products from url
   * */
  protected String doInBackground(String... args) {
      // Building Parameters
    //  session_email = sPref.getString("SESSION_UID","");
  
      usersList = new ArrayList&lt;HashMap&lt;String, Object&gt;&gt;();
      //usersList1 = new ArrayList&lt;HashMap&lt;String, Object&gt;&gt;();
  
  
      // id=(String) viewHolder.idas5.getText();
  
  
  
  
      List&lt;NameValuePair&gt; params = new ArrayList&lt;NameValuePair&gt;();
  
  
  
          params.add(new BasicNameValuePair("email", session_email));
          params.add(new BasicNameValuePair("loc", "liked"));
          params.add(new BasicNameValuePair("con", "1"));
          params.add(new BasicNameValuePair("idtes", id));
          params.add(new BasicNameValuePair("emas", emm));
  
  
          JSONObject json = jParser.makeHttpRequest(url_all_properties7, "GET", params);
  
           if (json != null) {
  
          // Check your log cat for JSON reponse
          Log.d("All start: ", json.toString());
          // Checking for SUCCESS TAG
          try {
          int success = json.getInt(TAG_SUCCESS);
  
  
  
          if (success== 1) {
  
  
  
  
               // new LoadAllProducts22().execute();
  
  
  
              // products found
              // Getting Array of Products
  
              /*users = json.getJSONArray(TAG_PRO);
  
              //users1 = json.getJSONArray(TAG_PRO1);
  
  
              // looping through All Products
  
  
              for (int i = 0; i &lt; users.length(); i++) {
                  JSONObject c = users.getJSONObject(i);
                  //ImageView imageView = (ImageView) findViewById(R.id.profilePic);
  
  
  
                  // Storing each json item in variable
                  //String scpass = countt.getText().toString();
                  String uid = c.getString("uid1"); //from php blue
  
  
  
                  // creating new HashMap
                  HashMap&lt;String, Object&gt; map = new HashMap&lt;String, Object&gt;();
  
                  // adding each child node to HashMap key =&gt; value
                  map.put("UIDAS", uid); //from 
                  map.put("PIC", pic);
  
                  usersList.add(map);
                  //usersList1.add(map);
  
  
                  // creating new HashMap
  
  
              }*/
  
  
          } 
  
          else {
              // no products found
              // Launch Add New product Activity
              /*Intent i = new Intent(getApplicationContext(),    MainActivity.class);
              // Closing all previous activities
              i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
              startActivity(i);*/
          }
  
           } catch (JSONException e) {
                  e.printStackTrace();
              }
           } else {
  
  
  
              }
  
  
  
  
  
      return null;
  }
  
  
  /**
   * After completing background task Dismiss the progress dialog
   * **/
  protected void onPostExecute(String file_url) {
      // dismiss the dialog after getting all products
      //pDialog.dismiss();
      // updating UI from Background Thread
  
  
  
  
  }
  
  
  
  
  
        }
  </code></pre>