package tellh.com.gitclub.presentation.view.adapter.viewbinder; import android.support.v4.content.ContextCompat; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; import com.tellh.nolistadapter.IListAdapter; import com.tellh.nolistadapter.adapter.RecyclerViewAdapter; import com.tellh.nolistadapter.viewbinder.base.RecyclerViewBinder; import java.util.HashMap; import de.hdodenhof.circleimageview.CircleImageView; import tellh.com.gitclub.R; import tellh.com.gitclub.common.config.ExtraKey; import tellh.com.gitclub.common.config.IUsersType; import tellh.com.gitclub.common.utils.Utils; import tellh.com.gitclub.common.wrapper.ImageLoader; import tellh.com.gitclub.model.entity.UserEntity; import tellh.com.gitclub.presentation.contract.bus.RxBusPostman; import tellh.com.gitclub.presentation.contract.bus.event.LaunchActivityEvent; import tellh.com.gitclub.presentation.presenter.IUserListPresenter; import tellh.com.gitclub.presentation.widget.ButtonToggleHelper; /** * Created by tlh on 2016/10/4 :) */ public class UserListItemViewBinder extends RecyclerViewBinder<UserEntity, UserListItemViewBinder.ViewHolder> { private ButtonToggleHelper btnToggleHelper; private IUserListPresenter presenter; public UserListItemViewBinder(IUserListPresenter presenter) { this.presenter = presenter; btnToggleHelper = ButtonToggleHelper.builder() .setBackgroundDrawable(R.drawable.selector_button_green, R.drawable.selector_button_gray) .setTextColor(R.color.white, R.color.gray_text) .setText(R.string.follow, R.string.unfollow) .build(); } @Override public ViewHolder provideViewHolder(View view) { return new ViewHolder(view); } @Override public void bindView(final IListAdapter iListAdapter, ViewHolder holder, final int position, final UserEntity use) { //fill out data holder.tvName.setText(use.getLogin()); ImageLoader.load(use.getAvatar_url(), holder.ivUser); if (!TextUtils.isEmpty(use.getBio())) { holder.tvBio.setText(use.getBio()); } else { holder.tvBio.setText(Utils.getString(R.string.default_bio)); } //set up the Follow or unFollow button. final Button btnFollow = holder.btnFollow; if (!IUsersType.USER.equals(use.getType())) { btnFollow.setClickable(false); btnFollow.setBackgroundColor(ContextCompat.getColor(btnFollow.getContext(), R.color.gray)); btnFollow.setTextColor(ContextCompat.getColor(btnFollow.getContext(), R.color.gray_text)); holder.ivUserType.setBackgroundResource(R.drawable.ic_group); } else { btnFollow.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //to follow or unFollow user presenter.followUser(position, (RecyclerViewAdapter) iListAdapter, btnToggleHelper.toggle(btnFollow)); } }); btnToggleHelper.setState(btnFollow, use.isFollowing); holder.ivUserType.setBackgroundResource(R.drawable.ic_person); } if (!use.hasCheck) { presenter.getUserInfo(position, (RecyclerViewAdapter) iListAdapter); btnFollow.setTag(false); } //jump to detail activity holder.itemContainer.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { HashMap<String, String> params = new HashMap<>(1); params.put(ExtraKey.USER_NAME, use.getLogin()); RxBusPostman.postLaunchActivityEvent(params, LaunchActivityEvent.PERSONAL_HOME_PAGE_ACTIVITY); } }); } @Override public int getItemLayoutId(IListAdapter iListAdapter) { return R.layout.item_user; } class ViewHolder extends RecyclerViewBinder.ViewHolder { private CircleImageView ivUser; private TextView tvName; private ImageView ivUserType; private Button btnFollow; private TextView tvBio; private FrameLayout itemContainer; public ViewHolder(View rootView) { super(rootView); this.ivUser = (CircleImageView) rootView.findViewById(R.id.iv_user); this.tvName = (TextView) rootView.findViewById(R.id.tv_name); this.ivUserType = (ImageView) rootView.findViewById(R.id.iv_user_type); this.btnFollow = (Button) rootView.findViewById(R.id.btn_follow); this.tvBio = (TextView) rootView.findViewById(R.id.tv_bio); this.itemContainer = (FrameLayout) rootView.findViewById(R.id.item_container); } } }