Skip to content Skip to sidebar Skip to footer

Android: Handling Clicks On Image View Inside Recycler's View Item Using Touch Framework

I am trying to capture the clicks on ImageView which is enclosed inside the RecyclerView item. I have implemented RecyclerView.OnItemTouchListener and has gesture detector process

Solution 1:

This will solve your problem:

publicclassOnItemClickListenerimplementsView.OnClickListener {
    privateint position;
    private OnItemClickCallback onItemClickCallback;

    publicOnItemClickListener(int position, OnItemClickCallback onItemClickCallback) {
        this.position = position;
        this.onItemClickCallback = onItemClickCallback;
    }

    @OverridepublicvoidonClick(View view) {
        onItemClickCallback.onItemClicked(view, position);
    }

    publicinterfaceOnItemClickCallback {
        voidonItemClicked(View view, int position);
    }
}

Get an instance of 'OnItemClickCallback' interface and put it in your activity or fragment:

private OnItemClickListener.OnItemClickCallbackonItemClickCallback=newOnItemClickListener.OnItemClickCallback() {
    @OverridepublicvoidonItemClicked(View view, int position) {
        // switch(view.getId()) ...
    }
};

Then, pass that callback to your recyclerView:

recyclerView.setAdapter(newSimpleStringRecyclerViewAdapter(Arrays.asList("1", "2", "3"), onItemClickCallback));

Finally, this would be your adapter:

publicclassSimpleStringRecyclerViewAdapterextendsRecyclerView.Adapter<SimpleStringRecyclerViewAdapter.ViewHolder> {
    private List<String> mValues;
    private OnItemClickListener.OnItemClickCallback onItemClickCallback;

    publicSimpleStringRecyclerViewAdapter(List<String> items, OnItemClickListener.OnItemClickCallback onItemClickCallback) {
        mValues = items;
        this.onItemClickCallback = onItemClickCallback;
    }

    publicstaticclassViewHolderextendsRecyclerView.ViewHolder {
        publicfinal View mView;
        publicfinal TextView mTextView;

        publicViewHolder(View view) {
            super(view);
            mView = view;
            mTextView = (TextView) view.findViewById(R.id.txt_title);
        }
    }

    @Overridepublic ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        Viewview= LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false);
        returnnewViewHolder(view);
    }

    @OverridepublicvoidonBindViewHolder(final ViewHolder holder, finalint position) {
        holder.mTextView.setText(mValues.get(position));
        holder.mView.setOnClickListener(newOnItemClickListener(position, onItemClickCallback));
        holder.mTextView.setOnClickListener(newOnItemClickListener(position, onItemClickCallback));
    }

    @OverridepublicintgetItemCount() {
        return mValues.size();
    }
}

Post a Comment for "Android: Handling Clicks On Image View Inside Recycler's View Item Using Touch Framework"