У меня есть мои разные держатели для просмотра в моем RecyclerView. В onCreateViewHolder я проверить viewType затем вернуть соответствующий viewHolderКак сделать один прослушиватель OnClick для разных viewHolders
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
this.mContext = parent.getContext();
switch (viewType)
{
case ITEM_TYPE_HEADER_MAIN:
return new ViewHolderHeaderMain(MainHeaderView.newInstance(parent));
case ITEM_VIEW_TYPE_DEFAULT:
return new ViewHolderDefualt(LayoutInflater.from(parent.getContext())
.inflate(R.layout.card_list, parent, false), this.mContext);
case ITEM_VIEW_TYPE_CUSTOM:
return new ViewHolderCustom(LayoutInflater.from(parent.getContext())
.inflate(R.layout.story_custom_layout, parent, false), this.mContext);
default:
throw new IllegalArgumentException();
}
}
и:
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
final StoryModel storyModel = this.mStories.get(position);
final StoryModel topStory = this.mTopStory;
if (holder instanceof ViewHolderHeaderMain) {
ViewHolderHeaderMain viewHolderHeaderMain = (ViewHolderHeaderMain) holder;
viewHolderHeaderMain.getMainHeaderView().setTopStories(this.mTopStory);
} else if (holder instanceof ViewHolderDefault){
ViewHolderDefault viewHolderDefault = (ViewHolderDefault) holder;
viewHolderDefault.bindStory(this.mStories.get(position));
} else if (holder instanceof ViewHolderCustom){
ViewHolderCustom viewHolderCustom = (ViewHolderCustom) holder;
viewHolderCustom.bindStory(this.mStories.get(position));
}
Эти три viewHolders имеют одинаковые кликабельны взгляды как TextView для названия, описания и ImageButton для меню переполнения и ImageView для изображения , В этих viewHolders я делаю представления привязки данных (не в onBindViewHolder).
Теперь, когда дело доходит до onClickListeners, я должен реализовать View.onClickListener в каждом ViewHolder.
Мой вопрос: есть ли способ иметь один метод для этих интерактивных просмотров и назначать OnClickListener для каждого представления, а повторять то же самое в каждом viewHolder?
нравится:
private void setupClickableViews(final View view, final ViewHolderHeaderMain viewHolderheaderMain) {
viewHolderheaderMain.tvTitle.setOnClickListener(new View.OnClickListener() {
...
Где я должен определить три одинаковые методы для трех держателей просмотра.
Любые предложения?
Вы можете указать пример – Fshamri
Код не заполнен, но вы должны получить идею –