Skip to content

Instantly share code, notes, and snippets.

@m-cakir
Last active May 17, 2017 12:01
Show Gist options
  • Save m-cakir/8d8c13e3e93a07ea84122a848e5e13f8 to your computer and use it in GitHub Desktop.
Save m-cakir/8d8c13e3e93a07ea84122a848e5e13f8 to your computer and use it in GitHub Desktop.
Android Base Classes
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import butterknife.ButterKnife;
import butterknife.Unbinder;
public abstract class BaseFragment extends Fragment {
private Unbinder unbinder;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(getFragmentLayout(), container, false);
unbinder = ButterKnife.bind(this, view);
onBindView(view, savedInstanceState);
return view;
}
@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
}
public Unbinder getUnbinder() {
return unbinder;
}
abstract protected int getFragmentLayout();
abstract protected void onBindView(View view, Bundle savedInstanceState);
}
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import BaseRecyclerViewHolder;
import java.util.List;
public abstract class BaseAdapter<E, T extends BaseRecyclerViewHolder> extends RecyclerView.Adapter<T> {
private List<E> data;
public BaseAdapter(List<E> data) {
this.data = data;
}
@Override
public T onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(getLayout(), parent, false);
return getViewHolder(itemView);
}
@Override
public void onBindViewHolder(T holder, int position) {
holder.bindData(data.get(position));
}
@Override
public int getItemCount() {
return data.size();
}
abstract protected T getViewHolder(View view);
abstract protected int getLayout();
}
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.View;
public abstract class BaseViewHolder<T> extends RecyclerView.ViewHolder{
private final View view;
public BaseViewHolder(View view) {
super(view);
this.view = view;
}
abstract public void bindData(final T data);
protected @NonNull View view() {
return view;
}
protected @NonNull Context context() {
return view.getContext();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment