Add copy button for Every CardView in RecyclerView

感情迁移 提交于 2019-12-25 02:46:17

问题


How to Implement Coppy Button I want a copy button for every card in a RecyclerView. When the button is clicked a TextView will be copied, but I'm getting confused where to put the OnClick or how to get a string.

import android.content.ClipData;
import android.content.ClipboardManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;

import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.google.firebase.FirebaseApp;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

public class SadStatus extends AppCompatActivity {
    private View frag1View;

    private RecyclerView recyclerView;
    private DatabaseReference myref;

    private ClipboardManager clipboardManager;
    private ClipData clipData;

    String text;

    ImageButton imageButton, imageButton2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_attitude);


        FirebaseApp.initializeApp(this);

        recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
        recyclerView.setHasFixedSize(true);

        myref = FirebaseDatabase.getInstance().getReference().child("SadStatus");

        recyclerView.setLayoutManager(new LinearLayoutManager(this));

        clipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);

        imageButton = (ImageButton) findViewById(R.id.shareButton);
        imageButton2 = (ImageButton) findViewById(R.id.coppyButton);
    }


    @Override
    public void onStart() {
        super.onStart();
        FirebaseRecyclerAdapter<Blog, AttitudeActivity.BlogViewHolder> recyclerAdapter = new FirebaseRecyclerAdapter<Blog, AttitudeActivity.BlogViewHolder>(
                Blog.class,
                R.layout.individual_row,
                AttitudeActivity.BlogViewHolder.class,
                myref
        ) {
            @Override

            //populateViewHolder metod sets all Element which Our Main Componets Contain.

            protected void populateViewHolder(AttitudeActivity.BlogViewHolder viewHolder, Blog model, int position) {

                //it gets tittle frm model class and setting it to the viewHolder, same as below
                viewHolder.setTitle(model.getTitle());




            }
        };

        //here Adapter is Setting the recyclerView
        recyclerView.setAdapter(recyclerAdapter);
    }

    //this Is the BlogViewHolder
    public static class BlogViewHolder extends RecyclerView.ViewHolder {

        View mView;
        //here Reference to all the Elements it Contain

        String text;

        private ClipboardManager clipboardManager;
        private ClipData clipData;

        TextView textView_title;
        ImageButton imageButton, imageButton2;

        public BlogViewHolder(final View itemView) {

            super(itemView);

            mView = itemView;

            textView_title = (TextView) itemView.findViewById(R.id.title);
            imageButton = (ImageButton) itemView.findViewById(R.id.shareButton);
            imageButton2 = (ImageButton) itemView.findViewById(R.id.coppyButton);

            textView_title.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    String text = textView_title.getText().toString().trim();

                    clipData = ClipData.newPlainText("text",text);
                    clipboardManager.setPrimaryClip(clipData);
                }
            });


        }


        public void setTitle(String title) {
            textView_title.setText(title);


        }
    }
}

回答1:


You can add the onClick listener for the TextView inside the populateViewHolder method.

protected void populateViewHolder(//your arguments) {

   viewHolder.textView_title.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
         //your code
           }
        });
   }


来源:https://stackoverflow.com/questions/48791271/add-copy-button-for-every-cardview-in-recyclerview

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!