danylovolokh / HashTagHelper

This is a library designed for highlighting hashtags ("#example") and catching click on them.
592 stars 71 forks source link

Different ClickListener for plain text and HashTagText #14

Open chemickypes opened 7 years ago

chemickypes commented 7 years ago

I have a RecyclerView and I need handle different click listener in row: one for row view and one for HashTag text.

I noticed that if I put an Hashtag click listener, row click listener is not consumed (if clicked on plain text).

So, the first fix is set row click listener to TextView: now, if I click on HashTag both listener are consumed (hashtag click listener before than view On click listener).

In order to avoid this behavior I implemented this listener:


public class FooClickListener implements View.OnClickListener,HashTagHelper.OnHashTagClickListener {
    FooAdapter.FooListener listener;
    FooModel model;
    private boolean consumedHashTagClick = false;

    public FooClickListener(FooAdapter.FooListener listener, FooModel model) {
        this.listener = listener;
        this.model = model;
    }

    @Override
    public void onClick(View view) {
        if(!consumedHashTagClick) listener.onRowClick(model.text);

        consumedHashTagClick = false;
    }

    @Override
    public void onHashTagClicked(String hashTag) {
        consumedHashTagClick = true;
        listener.onHashtagClick(hashTag);
    }
}

Now I can be sure of what listener will be consumed.