Skip to content Skip to sidebar Skip to footer

How To Get Activity Button Click Listener In Recyclerview.adapter Class

How its possible when user press #button then it will print # on focused EditText of RecyclerView. My code and output is below. Please help me.... I've done everything, but got s

Solution 1:

Declare button as static in your activity.

Example: In ABCActivity:

publicstaticButton btnTest;
@OverridepublicvoidonCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_add_family_member);
    btnTest = (Button)findviewbyid(R.id.btnTest);
}

In Adpter:

ABCActivity.btnTest.setOnClickListener(newView.OnClickListener() {
        @OverridepublicvoidonClick(View v) {

        }
    });

Solution 2:

Make your own click listener.

privatestatic OnItemClickListener listener;

publicinterfaceOnItemClickListener {
    voidonItemClick(View itemView, int position);
}

publicvoidsetOnItemClickListener(OnItemClickListener listener) {
    YourAdapterClass.listener = listener;
}

// and in constructor of ViewHolder use it.
yourButtonView.setOnClickListener(newView.OnClickListener() {
            @OverridepublicvoidonClick(View v) {
                if (listener != null) {
                    listener.onItemClick(itemView, getLayoutPosition());
                }
            }
});

So that code should be in your RecyclerView adapter. In your activity/fragment you just need to use adapter's method setOnItemClickListener. It's normal practice for your question.

Solution 3:

You should check focus in onBindViewHolder like this:

@OverridepublicvoidonBindViewHolder(MyViewHolder holder, int position) {
            ItemModelitemModel= mList.get(position);

            holder.editCheckItem.setText(itemModel.getChkText());

            if(holder.editCheckItem.hasFocus()) {
                // Add your # character to your edit text
                holder.editCheckItem.append("#");
            }
        }

Then, simply notify your adapter:

@OverridepublicvoidonClick(View v) {

            if (v.getId() == R.id.btnAt) {
                //print @ on focused EditText of RecyclerView item
            } elseif (v.getId() == R.id.btnHash) {
                //print # on focused EditText of RecyclerView item
                myAdapterRecyclerView.notifyDataChanged();
            }
        }

Post a Comment for "How To Get Activity Button Click Listener In Recyclerview.adapter Class"