@Override public int getItemViewType(int position) { if (isHaveMore && position == getCount() - 1) { return TYPE_FOOTER; } if (mAdapter != null) { return mAdapter.getItemViewType(position); } return TYPE_NORMAL; }
private void setupAdapterView(FoldableItemLayout layout, int position) { // Binding layout to new data int type = adapter.getItemViewType(position); View recycledView = null; if (type != Adapter.IGNORE_ITEM_VIEW_TYPE) { Queue<View> cache = recycledViews.get(type); recycledView = cache == null ? null : cache.poll(); } View view = adapter.getView(position, recycledView, layout.getBaseLayout()); if (type != Adapter.IGNORE_ITEM_VIEW_TYPE) { viewsTypesMap.put(view, type); } layout.getBaseLayout().addView(view, PARAMS); }
@Override public int getItemViewType(final int position) { return mDecoratedBaseAdapter.getItemViewType(position); }
@Override public int getItemViewType(int position) { return mAdapter.getItemViewType(position); }
@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); } }
@Override public View getView(int position, View v, ViewGroup parent) { if (parent != listView) { // Set i abetest 18 nov 2014 Log.rapporterFejl(new IllegalStateException(listView + " " + parent)); } Viewholder vh; AQuery aq; int type = getItemViewType(position); if (type == TOP) { if (topView == null) { topView = opretTopView(); } opdaterTop(); return topView; } if (v == null) { v = getLayoutInflater(null).inflate(layoutFraType[type], parent, false); vh = new Viewholder(); vh.itemViewType = type; aq = vh.aq = new AQuery(v); v.setTag(vh); vh.startid = aq.id(R.id.starttid).typeface(App.skrift_gibson).getTextView(); if (type == OVERSKRIFT_PLAYLISTE_INFO || type == OVERSKRIFT_INDSLAG_INFO) { aq.id(R.id.playliste).clicked(Udsendelse_frag.this).typeface(App.skrift_gibson); aq.id(R.id.info).clicked(Udsendelse_frag.this).typeface(App.skrift_gibson); } else if (type == INFOTEKST) { aq.id(R.id.titel).typeface(App.skrift_georgia); String forkortInfoStr = udsendelse.beskrivelse; if (udsendelse.beskrivelse.length() > 110) { forkortInfoStr = forkortInfoStr.substring(0, 110); String vis_mere = getString(R.string.___vis_mere_); forkortInfoStr += vis_mere; SpannableString spannable = new SpannableString(forkortInfoStr); spannable.setSpan( new ForegroundColorSpan(App.color.blå), forkortInfoStr.length() - vis_mere.length(), forkortInfoStr.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); aq.clicked(Udsendelse_frag.this).text(spannable /*forkortInfoStr*/); } else { aq.text(forkortInfoStr); Linkify.addLinks(aq.getTextView(), Linkify.WEB_URLS); } aq.getView().setContentDescription(udsendelse.beskrivelse); } else if (type == PLAYLISTEELEM_NU || type == PLAYLISTEELEM) { vh.titel = aq.id(R.id.titel_og_kunstner).typeface(App.skrift_gibson).getTextView(); } else if (type == INDSLAGLISTEELEM) { vh.titel = aq.id(R.id.titel).typeface(App.skrift_gibson_fed).getTextView(); aq.id(R.id.beskrivelse).typeface(App.skrift_gibson).getTextView(); } else if (type == VIS_HELE_PLAYLISTEN_KNAP) { aq.id(R.id.vis_hele_playlisten) .clicked(Udsendelse_frag.this) .typeface(App.skrift_gibson); } else if (type == ALLE_UDSENDELSER) { aq.id(R.id.titel).typeface(App.skrift_gibson_fed); } else if (type == BERIGTIGELSE) { aq.id(R.id.titel) .visible() .typeface(App.skrift_gibson) .getTextView() .setText( lavFedSkriftTil( udsendelse.berigtigelseTitel + "\n" + udsendelse.berigtigelseTekst, udsendelse.berigtigelseTitel.length())); // .setText(lavFedSkriftTil("BEKLAGER\nDenne udsendelse er desværre ikke // tilgængelig. For yderligere oplysninger se dr.dk/programetik", 8)); } } else { vh = (Viewholder) v.getTag(); aq = vh.aq; if (!App.PRODUKTION && vh.itemViewType != type) throw new IllegalStateException( "Liste ej konsistent, der er nok sket ændringer i den fra f.eks. getView()"); } // Opdatér viewholderens data if (type == PLAYLISTEELEM_NU || type == PLAYLISTEELEM) { Playlisteelement ple = (Playlisteelement) liste.get(position); vh.titel.setText(lavFedSkriftTil(ple.titel + " | " + ple.kunstner, ple.titel.length())); vh.titel.setContentDescription(ple.titel + " af " + ple.kunstner); vh.startid.setText(ple.startTidKl); if (type == PLAYLISTEELEM_NU) { ImageView im = aq.id(R.id.senest_spillet_kunstnerbillede).getImageView(); aq.image(skalérDiscoBilledeUrl(ple.billedeUrl, im.getWidth(), im.getHeight())); } else { boolean topseparator = (adapter.getItemViewType(position - 1) == PLAYLISTEELEM_NU); vh.aq.id(R.id.stiplet_linje).visibility(topseparator ? View.INVISIBLE : View.VISIBLE); } aq.id(R.id.hør) .visibility(udsendelse.kanHøres && ple.offsetMs >= 0 ? View.VISIBLE : View.GONE); } else if (type == INDSLAGLISTEELEM) { Indslaglisteelement ple = (Indslaglisteelement) liste.get(position); vh.titel.setText(ple.titel); aq.id(R.id.beskrivelse).text(ple.beskrivelse); // v.setBackgroundResource(R.drawable.elem_hvid_bg); aq.id(R.id.hør) .visibility(udsendelse.kanHøres && ple.offsetMs >= 0 ? View.VISIBLE : View.GONE); } else if (type == OVERSKRIFT_PLAYLISTE_INFO || type == OVERSKRIFT_INDSLAG_INFO) { aq.id(R.id.playliste) .background(visInfo ? R.drawable.knap_graa40_bg : R.drawable.knap_sort_bg); aq.id(R.id.info) .background(visInfo ? R.drawable.knap_sort_bg : R.drawable.knap_graa40_bg); } udvikling_checkDrSkrifter(v, this + " position " + position); return v; }