@Override
 public void run() {
   App.forgrundstråd.removeCallbacks(tjekFragmentSynligt);
   if (!getUserVisibleHint() || !isResumed()) return; // Ekstra tjek
   Log.d("Udsendelse_frag tjekFragmentSynligt ");
   if (aktuelUdsendelsePåKanalen() || udsendelse.playliste == null)
     opdaterSpillelisteRunnable.run();
   if (udsendelse.kanHøres && afspiller.getAfspillerstatus() == Status.STOPPET) {
     afspiller.setLydkilde(udsendelse);
   }
 }
  @Override
  public void onItemClick(AdapterView<?> listView, View view, int position, long id) {
    if (position == 0) return;
    // startActivity(new Intent(getActivity(), VisFragment_akt.class).putExtras(getArguments())  //
    // Kanalkode + slug
    //    .putExtra(VisFragment_akt.KLASSE,
    // Programserie_frag.class.getName()).putExtra(DRJson.SeriesSlug.name(),
    // udsendelse.programserieSlug));

    int type = adapter.getItemViewType(position);

    if (type == PLAYLISTEELEM || type == PLAYLISTEELEM_NU) {
      if (!udsendelse.streamsKlar() || !udsendelse.kanHøres) return;
      // Det må være et playlisteelement
      final Playlisteelement pl = (Playlisteelement) liste.get(position);
      if (udsendelse.equals(afspiller.getLydkilde())
          && afspiller.getAfspillerstatus() == Status.SPILLER) {
        afspiller.seekTo(pl.offsetMs);
      } else {
        DRData.instans.senestLyttede.registrérLytning(udsendelse);
        DRData.instans.senestLyttede.sætStartposition(udsendelse, pl.offsetMs);
        afspiller.setLydkilde(udsendelse);
        afspiller.startAfspilning();
      }
      playlisteElemDerSpillerNu = pl;
      playlisteElemDerSpillerNuIndex = udsendelse.playliste.indexOf(pl);
      adapter.notifyDataSetChanged();
      Log.registrérTestet("Valg af playlisteelement", "ja");
    } else if (type == INDSLAGLISTEELEM) {
      if (!udsendelse.streamsKlar()) return;
      final Indslaglisteelement pl = (Indslaglisteelement) liste.get(position);
      if (udsendelse.equals(afspiller.getLydkilde())
          && afspiller.getAfspillerstatus() == Status.SPILLER) {
        afspiller.seekTo(pl.offsetMs);
      } else {
        afspiller.setLydkilde(udsendelse);
        afspiller.startAfspilning();
        afspiller.observatører.add(
            new Runnable() {
              @Override
              public void run() {
                if (afspiller.getLydkilde() == udsendelse) {
                  if (afspiller.getAfspillerstatus() != Status.SPILLER) return;
                  afspiller.seekTo(pl.offsetMs);
                }
                afspiller.observatører.remove(this); // afregistrér
              }
            });
      }
      Log.registrérTestet("Valg af indslag", "ja");
    } else if (type == ALLE_UDSENDELSER) {

      Fragment f = new Programserie_frag();
      f.setArguments(
          new Intent()
              .putExtra(P_kode, kanal.kode)
              .putExtra(DRJson.Slug.name(), udsendelse.slug)
              .putExtra(DRJson.SeriesSlug.name(), udsendelse.programserieSlug)
              .getExtras());
      getActivity()
          .getSupportFragmentManager()
          .beginTransaction()
          .replace(R.id.indhold_frag, f)
          .addToBackStack(null)
          .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
          .commit();
      Sidevisning.vist(Programserie_frag.class, udsendelse.programserieSlug);
    }
  }
  private void opdaterTop() {
    AQuery aq = (AQuery) topView.getTag();
    // aq.id(R.id.højttalerikon).visibility(streams ? View.VISIBLE : View.GONE);
    /*
    boolean lydkildeErDenneUds = udsendelse.equals(afspiller.getLydkilde());
    boolean lydkildeErDenneKanal = kanal == afspiller.getLydkilde().getKanal();
    boolean aktuelUdsendelsePåKanalen = udsendelse.equals(udsendelse.getKanal().getUdsendelse());
    */
    boolean spiller = afspiller.getAfspillerstatus() == Status.SPILLER;
    boolean forbinder = afspiller.getAfspillerstatus() == Status.FORBINDER;
    boolean erOnline = App.netværk.erOnline();

    boolean udsendelsenSpillerNu =
        udsendelse.equals(afspiller.getLydkilde().getUdsendelse()) && (spiller || forbinder);
    boolean udsendelsenErAktuelPåKanalen = udsendelse.equals(udsendelse.getKanal().getUdsendelse());

    /* Muligheder
    Udsendelsen spiller lige nu

     */
    ImageView hør_ikon = aq.id(R.id.hør).getImageView();
    TextView hør_tekst = aq.id(R.id.hør_tekst).getTextView();
    if (false) ;
    else if (udsendelsenSpillerNu) { // Afspiller / forbinder denne udsendelse
      hør_ikon.setVisibility(View.GONE);
      hør_tekst.setVisibility(View.VISIBLE);
      hør_tekst.setText(spiller ? R.string.AFSPILLER : R.string.FORBINDER);
    } else if (udsendelse.hentetStream != null) { // Hentet udsendelse
      hør_ikon.setVisibility(View.VISIBLE);
      hør_tekst.setVisibility(View.GONE);
    } else if (!erOnline) { // Ej online
      hør_ikon.setVisibility(View.GONE);
      hør_tekst.setVisibility(View.VISIBLE);
      hør_tekst.setText(R.string.INTERNETFORBINDELSE_MANGLER);
    } else if (!udsendelse.kanHøres
        && !udsendelsenErAktuelPåKanalen) { // On demand og direkte udsendelser
      hør_ikon.setVisibility(View.GONE);
      hør_tekst.setVisibility(View.VISIBLE);
      hør_tekst.setText(R.string.KAN_IKKE_AFSPILLES);
    } else {
      hør_ikon.setVisibility(View.VISIBLE);
      hør_tekst.setVisibility(View.GONE);
    }
    /* skrald
        aq.id(R.id.hent).text("SPILLER " + kanal.navn.toUpperCase() + " LIVE");
    */

    Cursor c = DRData.instans.hentedeUdsendelser.getStatusCursor(udsendelse);
    aq.id(R.id.hent);

    if (!DRData.instans.hentedeUdsendelser.virker()) {
      aq.gone();
    } else if (c != null) {
      int status = c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS));
      if (status != DownloadManager.STATUS_SUCCESSFUL && status != DownloadManager.STATUS_FAILED) {
        App.forgrundstråd.removeCallbacks(this);
        App.forgrundstråd.postDelayed(this, 5000);
      }
      String statustekst = HentedeUdsendelser.getStatustekst(c);
      c.close();
      if (status == DownloadManager.STATUS_SUCCESSFUL) statustekst = "Hentet";

      aq.text(statustekst.toUpperCase()).enabled(true).textColorId(R.color.grå40);
    } else if (!udsendelse.kanHentes) {
      aq.text(R.string.KAN_IKKE_HENTES).enabled(false).textColorId(R.color.grå40);
    } else if (!udsendelse.streamsKlar()) {
      aq.text("").enabled(false).textColorId(R.color.grå40);
    } else {
      aq.text(R.string.DOWNLOAD).enabled(true).textColorId(R.color.blå);
    }
    udvikling_checkDrSkrifter(topView, this + " position top");
  }