package com.koushikdutta.boilerplate.simplelist; import android.content.res.Resources; import android.view.View; /** * Created by koush on 3/29/15. */ public abstract class SimpleListItem { private boolean selectable = true; private Resources resources; private SimpleListFragmentAdapter adapter; private SimpleListItemClickListener onClick; private SimpleListItemLongClickListener onLongClick; protected void notifyDataSetChanged() { if (adapter != null) adapter.notifyDataSetChanged(); } protected Resources getResources() { return resources; } public SimpleListItem(Resources resources) { this.resources = resources; } public SimpleListItem(SimpleListFragmentAdapter adapter) { this(adapter.resources); } public SimpleListItem(SimpleListFragment fragment) { this(fragment.getAdapter()); } void setAdapter(SimpleListFragmentAdapter adapter) { this.adapter = adapter; } public void invokeClick() { if (onClick != null) onClick.onClick(this); } public boolean invokeLongClick() { if (onLongClick != null) return onLongClick.onLongClick(this); return false; } protected void onClick() { invokeClick(); } protected boolean onLongClick() { return invokeLongClick(); } public <T extends SimpleListItem> T click(SimpleListItemClickListener<T> listener) { onClick = listener; return (T)this; } public <T extends SimpleListItem> T longClick(SimpleListItemLongClickListener<T> listener) { onLongClick = listener; return (T)this; } protected abstract void bindView(View v); abstract int getViewType(); public boolean selectable() { return selectable; } public SimpleListItem selectable(boolean selectable) { this.selectable = selectable; return this; } }