title: Broadcast receiver in BaseAdaper
body: <p>I want to update a textview into a listView when i get my current position (GPS).</p>
  
  <p>So i send a broadcast in my activity when i had my position. In my listViewAdapter, i have a receiver who set text. But i don't know where i can registrer and unregistrer my broadcast. </p>
  
  <p>May be there is an other solution to send parameter to my listViewAdapter when my current position is available.</p>
  
  <p>MainActivity : </p>
  
  <pre><code>private ArrayList&lt;Establishment&gt; listEstablishment;
  private ListViewEstablishmentsAdapter adapter;
  
  
  @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.home_layout);
  
          pr = new PositionReceiver();
  
          //Get the list view
          ListView l = (ListView) findViewById(R.id.listviewEstablishments);
  
          //Create WebService to retrieve establishments datas
          EstablishmentInfosWebService ews = new EstablishmentInfosWebService("select * from establishment");
          listEstablishment = ews.getData();
  
  
          //Create a new adapter View
           adapter = new ListViewEstablishmentsAdapter(this, listEstablishment);
          l.setAdapter(adapter);
  
  
  
           public class PositionReceiver extends BroadcastReceiver {
  
              @Override
              public void onReceive(Context context, Intent intent) {
                  Location l = (Location) intent.getExtras().get("LOCATION");
                  int i = 0;
                  for(Establishment e : listEstablishment) {
              double d = distance(e.getLatitude(), e.getLongitude(), l.getLatitude(), l.getLongitude(), 'K');
                  e.setDistance(d+"");
              Log.d(TAG,"onreceive "+i);
              i++;
          }
              }
          }
  
  
  
   @Override
          public void onResume() {
              super.onResume();
              registerReceiver(pr, new IntentFilter("com.example.smartoo.POSITION_INTENT"));
          }
  
          /*
           * Called when the Activity is going into the background.
           * Parts of the UI may be visible, but the Activity is inactive.
           */
          @Override
          public void onPause() {
  
              unregisterReceiver(pr);
              super.onPause();
          }
  </code></pre>
  
  <p>ListViewAdapter : </p>
  
  <pre><code>public class ListViewEstablishmentsAdapter extends BaseAdapter {
  
      private static final String TAG = "com.example.smartoo.ListViewEstablishmentAdapter";
  
      //Un mécanisme pour gérer l'affichage graphique depuis un layout XML
      private LayoutInflater mInflater;
      //Le contexte dans lequel est présent notre adapter
      private final Context context;
      // Une liste d'établissements
      private ArrayList&lt;Establishment&gt; establishmentsList = null;
  
  
  
      private ViewHolder holder;
  
      //TODO add my currentLocation to constructor
      /**
       *
       * @param context
       * @param values
       *
       * Constructor
       */
      public ListViewEstablishmentsAdapter(Context context, ArrayList&lt;Establishment&gt; values) {
          super();
          this.context = context;
          establishmentsList = values;
          mInflater = LayoutInflater.from(context);
      }
  
      /**
       * @return number of establishments
       */
      @Override
      public int getCount() {
          return establishmentsList.size();
      }
  
      /**
       * @param position
       * @return Establishment to position "position"
       */
      @Override
      public Object getItem(int position) {
          return establishmentsList.get(position);
      }
  
      /**
       * @param position
       * @return The position of item
       */
      @Override
      public long getItemId(int position) {
          return position;
      }
  
      @Override
      public View getView(int position, View convertView, ViewGroup parent) {
          //ViewHolder holder = null;
          // Si la vue n'est pas recyclée
          if (convertView == null) {
              // On récupère le layout
              convertView = mInflater.inflate(R.layout.item, null);
  
              holder = new ViewHolder();
              // On place les widgets de notre layout dans le holder
              holder.Name = (TextView) convertView.findViewById(R.id.name);
              holder.Description = (TextView) convertView.findViewById(R.id.description);
              holder.Distance = (TextView) convertView.findViewById(R.id.distance);
  
              // puis on insère le holder en tant que tag dans le layout
              convertView.setTag(holder);
          } 
          else {
              // Si on recycle la vue, on récupère son holder en tag
              holder = (ViewHolder) convertView.getTag();
          }
  
          // Dans tous les cas, on récupère le contact téléphonique concerné
          Establishment e = (Establishment) getItem(position);
          // Si cet élément existe vraiment…
          if (e != null) {
              // On place dans le holder les informations sur le contact
              holder.Name.setText(e.getName());
              holder.Description.setText(e.getDescription());
              //TODO calculate distance with my position and longitude and latitdue
              holder.Distance.setText(e.getDistance());
          }
          return convertView;
  
      }
  
      static class ViewHolder {
          public TextView Name;
          public TextView Description;
          public TextView Distance;
      }
  
      public void updateEstablishmentList(ArrayList&lt;Establishment&gt; newlist) {
          establishmentsList.clear();
          establishmentsList.addAll(newlist);
          this.notifyDataSetChanged();
      }
  }
  </code></pre>
  
  <p>Establishment :</p>
  
  <pre><code>public class Establishment {
  
      //An identifer
      private int idEstablishment;
  
      //A Name
      private String name;
  
      //An address
      private String address;
  
      //An url picture
      private String urlImage;
  
      //A description
      private String description;
  
      //A phone number
      private String phoneNumber;
  
      //A type of establishment_fragment
      private int type;
  
      //A location
      private double latitude;
      private double longitude;
  
  //A distance
      private String distance = "0m";
  
  
      public Establishment () {
          super();
          idEstablishment = 0;
          name = "";
          address = "";
          urlImage = "";
          description = "";
          phoneNumber = "";
          type = 0;
          latitude = 0;
          longitude = 0;
      }
  
      /**
       *
       * @param id
       * @param n
       * @param url
       * @param d
       * @param p
       * @param t
       * @param lat
       * @param lon
       *
       * Constructor
       */
      public Establishment (int id, String n, String a, String url, String d, String p, int t, double lat, double lon) {
          idEstablishment = id;
          name = n;
          address = a;
          urlImage = url;
          description = d;
          phoneNumber = p;
          type = t;
          latitude = lat;
          longitude = lon;
      }
  
      public int getIdEstablishment() {
          return idEstablishment;
      }
  
      public void setIdEstablishment(int idEstablishment) {
          this.idEstablishment = idEstablishment;
      }
  
      public String getName() {
          return name;
      }
  
      public void setName(String name) {
          this.name = name;
      }
  
      public String getAddress() {
          return address;
      }
  
      public void setAddress(String address) {
          this.address = address;
      }
  
      public String getUrlImage() {
          return urlImage;
      }
  
      public void setUrlImage(String urlImage) {
          this.urlImage = urlImage;
      }
  
      public String getDescription() {
          return description;
      }
  
      public void setDescription(String description) {
          this.description = description;
      }
  
      public String getPhoneNumber() {
          return phoneNumber;
      }
  
      public void setPhoneNumber(String phoneNumber) {
          this.phoneNumber = phoneNumber;
      }
  
      public int getType() {
          return type;
      }
  
      public void setType(int type) {
          this.type = type;
      }
  
      public double getLatitude() {
          return latitude;
      }
  
      public void setLatitude(double latitude) {
          this.latitude = latitude;
      }
  
      public double getLongitude() {
          return longitude;
      }
  
      public void setLongitude(double longitude) {
          this.longitude = longitude;
      }
  
     public String getDistance() {
          return distance;
      }
  
      public void setDistance(String distance) {
          this.distance = distance;
      }
  }
  </code></pre>
  
  <p>Manifest :</p>
  
  <pre><code>&lt;activity
              android:name=".HomeActivity"
              android:label="Home"
              android:theme="@style/Theme.AppCompat.Light" &gt;
              &lt;action android:name="android.location.PROVIDERS_CHANGED" /&gt;
  
              &lt;receiver android:name=".PositionReceiver"&gt;
                  &lt;intent-filter&gt;
                      &lt;action android:name="com.example.smartoo.POSITION_INTENT"&gt;
                      &lt;/action&gt;
                  &lt;/intent-filter&gt;
              &lt;/receiver&gt;
  
              &lt;intent-filter&gt;
                  &lt;action android:name="android.intent.action.MAIN" /&gt;
  
                  &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
              &lt;/intent-filter&gt;
          &lt;/activity&gt;
  </code></pre>
  
  <p>** ANSWER : ** </p>
  
  <pre><code>public void updateEstablishmentList(ArrayList&lt;Establishment&gt; newlist) {
              establishmentsList = newlist;
              this.notifyDataSetChanged();
          }
  </code></pre>