26.09.2013 Aufrufe

06/2012 - KaffeeKlatsch

06/2012 - KaffeeKlatsch

06/2012 - KaffeeKlatsch

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

}<br />

}<br />

CheckedImageNoteView view;<br />

if (convertView != null) {<br />

view = (CheckedImageNoteView) convertView;<br />

view.setChecked(isSelected(position));<br />

} else {<br />

view =<br />

(CheckedImageNoteView) mLayoutInflater.inflate(<br />

R.layout.checked_image_note, parent, false<br />

);<br />

view.initializeListeners(<br />

mCheckBoxListener, mOnClickListener,<br />

mOnLongClickListener<br />

);<br />

}<br />

view.populate(position, mImageNotes[position]);<br />

return view;<br />

public ImageNote getImageNote(<br />

CheckedImageNoteView view<br />

) {<br />

return mImageNotes[view.getIndex()];<br />

}<br />

public void changeSelectionState(<br />

CheckedImageNoteView view<br />

) {<br />

boolean selected = !isSelected(view);<br />

view.setChecked(selected);<br />

if (selected) {<br />

mSelected.add(Long.valueOf(view.getIndex()));<br />

} else {<br />

mSelected.remove(Long.valueOf(view.getIndex()));<br />

}<br />

mOnSelectionChangedListener.onSelectionChanged(<br />

view, selected, mSelected.size()<br />

);<br />

}<br />

public boolean isSelected(CheckedImageNoteView view) {<br />

return mSelected.contains(<br />

Long.valueOf(view.getIndex())<br />

);<br />

}<br />

private boolean isSelected(long index) {<br />

return mSelected.contains(Long.valueOf(index));<br />

}<br />

public int getSelectedCount() {<br />

return mSelected.size();<br />

}<br />

public void resetSelection() {<br />

mSelected.clear();<br />

notifyDataSetChanged();<br />

}<br />

public interface OnSelectionChangedListener {<br />

void onSelectionChanged(<br />

CheckedImageNoteView view, boolean selected,<br />

int selectedCount<br />

);<br />

}<br />

(Einheits-)Gewänder für den Androiden<br />

Damit sind die nötigen Arbeiten zur Darstellung der<br />

Liste abgeschlossen. Es folgt die Implementierung der<br />

Benutzerinteraktion. Dazu werden die benötigten Listener<br />

in der ImageNotesActivity erzeugt. Für das Aufrufen<br />

der Detailansicht einer Bildnotiz wird ein einfacher<br />

OnClickListener erzeugt, der beim Klicken auf ein<br />

Listenelement aktiv wird. Wenn der Selektionsmodus<br />

aktiv ist, soll anstelle des Aufrufs der Detailansicht der<br />

Selektionszustand des Elements geändert werden. Zum<br />

Starten des Selektionsmodus existieren zwei weitere Listener,<br />

die bei einem langen Klick auf ein Listenelement<br />

oder bei der Aktivierung einer Checkbox zum Einsatz<br />

kommen. Diese versuchen zuerst den Contextual Action<br />

Mode zu starten und informieren dann den Adapter über<br />

die Änderung ihres Selektionszustands.<br />

private final OnClickListener mOnClickListener =<br />

new OnClickListener() {<br />

@Override<br />

public void onClick(View view) {<br />

if (mActionMode == null) {<br />

Intent intent =<br />

new Intent(this, ImageNoteActivity.class);<br />

intent.putExtra(<br />

ImageNoteActivity.IMAGE_NOTE_ID,<br />

((CheckedImageNoteView) view).getIndex()<br />

);<br />

startActivity(intent);<br />

} else {<br />

mImageNotesAdapter.changeSelectionState(<br />

(CheckedImageNoteView) view<br />

);<br />

}<br />

}<br />

};<br />

private final OnClickListener mCheckBoxListener =<br />

new OnClickListener() {<br />

@Override<br />

public void onClick(View view) {<br />

tryInvokeCab();<br />

mImageNotesAdapter.changeSelectionState(<br />

(CheckedImageNoteView) view.getParent()<br />

);<br />

}<br />

};<br />

private final OnLongClickListener mOnLongClickListener =<br />

new OnLongClickListener() {<br />

@Override<br />

public boolean onLongClick(View view) {<br />

tryInvokeCab();<br />

mImageNotesAdapter.changeSelectionState(<br />

(CheckedImageNoteView) view<br />

);<br />

return true;<br />

}<br />

};<br />

Seite 14 <strong>KaffeeKlatsch</strong> Jahrgang 5 / Nr. 6 / Juni <strong>2012</strong>

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!