Skip to content

Instantly share code, notes, and snippets.

@xingrz
Last active May 22, 2020 19:46
Show Gist options
  • Save xingrz/95e4aa31e386b3629bc5 to your computer and use it in GitHub Desktop.
Save xingrz/95e4aa31e386b3629bc5 to your computer and use it in GitHub Desktop.
A RecyclerView.Adapter-like Adapter that binds RealmResults to ListView
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import io.realm.RealmObject;
import io.realm.RealmResults;
public abstract class RealmAdapter<E extends RealmObject, VH extends RealmAdapter.ViewHolder>
extends BaseAdapter {
public static class ViewHolder {
public final View itemView;
public ViewHolder(View itemView) {
this.itemView = itemView;
this.itemView.setTag(this);
}
}
private RealmResults<E> results;
public abstract VH onCreateViewHolder(ViewGroup parent, int viewType);
public abstract void onBindViewHolder(VH holder, int position);
public void onViewRecycled(VH holder) {
}
public void setResults(RealmResults<E> results) {
this.results = results;
notifyDataSetChanged();
}
@Override
public int getCount() {
return results == null ? 0 : results.size();
}
@Override
public E getItem(int position) {
return results == null ? null : results.get(position);
}
@Override
public long getItemId(int position) {
return -1;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = onCreateViewHolder(parent, getItemViewType(position)).itemView;
} else {
onViewRecycled(getViewHolder(convertView));
}
onBindViewHolder(getViewHolder(convertView), position);
return convertView;
}
@SuppressWarnings("unchecked")
private VH getViewHolder(View view) {
return (VH) view.getTag();
}
}
@longnguyencse
Copy link

thank u

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment