import android.databinding.DataBindingUtil; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.app.wanna.android.R; import com.app.wanna.android.data.User; import com.app.wanna.android.databinding.LayoutItemPeopleBinding; import com.app.wanna.android.utils.firebaseadapter.FirebaseRecyclerAdapter; import com.firebase.ui.common.ChangeEventType; import com.firebase.ui.database.FirebaseRecyclerOptions; import com.google.firebase.database.DataSnapshot; import com.squareup.picasso.Picasso; public class ExamplePeopleAdapter extends FirebaseRecyclerAdapter { private RecycleItemClick recycleItemClick; private static final String TAG = "PeopleListAdapter"; public ExamplePeopleAdapter(FirebaseRecyclerOptions options) { super(options, true); } public interface RecycleItemClick { void onItemClick(String userId, User user, int position); } public void setRecycleItemClick(RecycleItemClick recycleItemClick) { this.recycleItemClick = recycleItemClick; } @Override public PeopleViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.layout_item_people, parent, false); return new PeopleViewHolder(view); } @Override protected void onBindViewHolder(PeopleViewHolder holder, int position, User model) { holder.bind(model); } @Override protected void onChildUpdate(User model, ChangeEventType type, DataSnapshot snapshot, int newIndex, int oldIndex) { model.setUserId(snapshot.getKey()); super.onChildUpdate(model, type, snapshot, newIndex, oldIndex); } @Override protected boolean filterCondition(User model, String filterPattern) { return model.getFirstName().toLowerCase().contains(filterPattern) || model.getLastName().toLowerCase().contains(filterPattern); } public class PeopleViewHolder extends RecyclerView.ViewHolder { LayoutItemPeopleBinding mBinding; PeopleViewHolder(View view) { super(view); mBinding = DataBindingUtil.bind(view); } public void bind(User user) { Picasso.with(mBinding.peopleImage.getContext()) .load(user.getImage()) .placeholder(R.drawable.place_holder_user) .into(mBinding.peopleImage); mBinding.peopleName.setText(String.format("%s %s", user.getFirstName(), user.getLastName())); itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int pos = getAdapterPosition(); User user = getItem(pos); recycleItemClick.onItemClick(user.getUserId(), user, pos); } }); } } }