How to send value from onItemClick RecycleView to other java class

99 Views Asked by At
 @Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
    String clicktemplate = modelClassesListt.get(i).getTitle();
    Toast.makeText(Template.this ,modelClassesListt.get(i).getTitle() , Toast.LENGTH_SHORT).show();
}

I want to send this clicktemplate string value to other class

3

There are 3 best solutions below

0
Mehul Kabaria On BEST ANSWER

You have to put value in Intent or Bundle and send it to the next screen.

Here is an example for pass data in Activity.

Intent intent = new Intent(this, YourNextActivity.class);
                intent.putExtra("key_clicktemplate", clicktemplate);
                startActivity(intent);

To get value in next screen like below

String value = getIntent().getExtras().getString("key_clicktemplate");
0
SRJ On

You can use several approaches to implement your need.below thread will be useful to you.

How to pass values from RecycleAdapter to MainActivity or Other Activities

0
Evgeni Vilenchik On

In your recyclerview class add onclicklistener interface and include your listener in constructor:

private final OnItemClickListener listener;

public interface OnItemClickListener {
        void onItemClick(myObject item, int position, String message);
    }

public MyRecyclerViewAdapter(Activity pActivity, ArrayList<myObject> pList, int pItemLayout, OnItemClickListener listener) {
        activity = pActivity;
        rewardsList = pList;
        layoutID=pItemLayout;
        this.listener = listener;
    }

Then. in onCreateViewHolder:

@Override
    public void onBindViewHolder(MyHolder holder, int position) {
        myObject currentItem = rewardsList.get(position);
        holder.bindList(currentItem, listener, position);
    }

Next, in your ViewHolder add:

class MyHolder extends RecyclerView.ViewHolder {

        View masterView;


        MyHolder(View itemView) {
            super(itemView);

            masterView = itemView;


        }

        void bindList(final myObject item, final OnItemClickListener listener, int position){

            masterView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    listener.onItemClick(item, position,"edit");
                }
            });

...

Finally, in calling activity/fragment:

MyRecyclerViewAdapter adapter = new MyRecyclerViewAdapter(mActivity, list, R.layout.item, new MyRecyclerViewAdapter.OnItemClickListener() {
                    @Override
                    public void onItemClick(MyObject item, int position, String message) {

                        //item clicks handled here

                        switch (message){
                            case ITEM_OPEN:
                                // Do whatever you need with clicked item here
                                break;

                            case ITEM_EDIT:
                                // Do whatever you need with clicked item here
                                break;


                        }
                    }
                }, mRecyclerView);