Butterknife @onclick Inside Viewholder In Customadapter
I'm currently learning butterknife, and I need to bind specific @OnClicks on different views generated by my customer adapter. How do I go about with this? I've seen an answer in o
Solution 1:
Imagine you have a ViewHolder like this.
staticclassViewHolder {
@InjectView(R.id.user_name)
TextView userName;
@InjectView(R.id.user_title)
TextView userTitle;
publicViewHolder(View view) {
ButterKnife.inject(this, view);
}
}
You can bind events in your adapters getView method for each view in your holder.
@OverridepublicViewgetView(int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
if (convertView != null) {
holder = (ViewHolder) convertView.getTag();
} else {
convertView = LayoutInflater.from(mContext).inflate(
R.layout.your_row_layout, parent, false);
holder = newViewHolder(convertView);
convertView.setTag(holder);
}
holder.userName.setOnClickListener(newView.OnClickListener() {
@OverridepublicvoidonClick(View v) {
//Your stuff here
}
});
holder.userTitle.setOnClickListener(newView.OnClickListener() {
@OverridepublicvoidonClick(View v) {
//Your stuff here
}
});
return convertView;
}
Solution 2:
As @Ugur has suggested you would initiate your ViewHolder using butterknife. You can add an on click listener to a view by doing this as an example for the userName View:
@OnClick(R.id.user_name)publicvoidclickedUserName(SocialEyeTextView userName)
{
//Do something with user name
}
Solution 3:
I have this ViewHolder
..
publicclassViewHolderextendsRecyclerView.ViewHolder {
@Bind(R.id.item_tipo_evento_estado_text) TextView text;
@Bind(R.id.item_text_radiobutton_check) AppCompatCheckBox checkBox;
publicViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
@OnClick(R.id.btnCheck)publicvoidonCheck() {
Log.d("ViewHolder", "position ->" + getAdapterPosition());
}
}
ok my R.id.btnCheck
is my id of LinearLayout
content all Views
Solution 4:
write this code in ViewHolder
class
staticclassViewHolder {
publicint getPosition;
@Nullable@Bind(R.id.txt_title_name)
TextView txtTitle;
publicViewHolder(View view) {
ButterKnife.bind(this, view);
}
@OnClick(R.id.btn_download)publicvoidonCheck() {
Log.d("ViewHolder", "position ->" + getPosition);
}
}
@Overridepublic View getView(int position, View convertView, ViewGroup parent) {
holder.getPosition = position;
}
Post a Comment for "Butterknife @onclick Inside Viewholder In Customadapter"