Copy to clipboard the content of a cardview

耗尽温柔 提交于 2020-01-20 09:35:13

问题


I've implemented a recycler card view and want to use a button click method to copy the content of cardView. There aretwo texts in cardview and i want to copy the content only, different for different cards. How can I do this? Here is my Cardview adapter.

  public static class ViewHolder extends RecyclerView.ViewHolder{
        Button copyButton;
        Button shareButton;


        TextView title;
        TextView content;
        public ViewHolder(View itemView) {
            super(itemView);
            this.title = (TextView)itemView.findViewById(R.id.card_title);
            this.content = (TextView)itemView.findViewById(R.id.card_content);
            this.copyButton= (Button)itemView.findViewById(R.id.copyButton);
            this.shareButton=(Button)itemView.findViewById(R.id.shareButton);


        }
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_item,parent,false);
        ViewHolder viewHolder = new ViewHolder(view);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        holder.title.setText(cardItems.get(position).title);
        holder.content.setText(cardItems.get(position).content);
        holder.copyButton.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){


                myClipboard = (ClipboardManager) v.getContext().getSystemService(Context.CLIPBOARD_SERVICE);


                myClip = ClipData.newPlainText("label", v.content.getText().toString());
                myClipboard.setPrimaryClip(myClip);
                Toast.makeText(v.getContext(), "Copied to clipboard" , Toast.LENGTH_SHORT ).show();

            }
        });
        holder.shareButton.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
                Intent share = new Intent(Intent.ACTION_SEND);
                share.setType("text/plain");
                share.putExtra(Intent.EXTRA_TEXT, "This message is being sent to another app");
                v.getContext().startActivity(Intent.createChooser(share, "Share Text"));
            }
        });
    }

v.content.getText().toString(), content cannot be resolved.


回答1:


Try the following

holder.copyButton.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){


                myClipboard = (ClipboardManager) v.getContext().getSystemService(Context.CLIPBOARD_SERVICE);


                myClip = ClipData.newPlainText("label", holder.content.getText().toString());
                myClipboard.setPrimaryClip(myClip);
                Toast.makeText(v.getContext(), "Copied to clipboard" , Toast.LENGTH_SHORT ).show();

            }
        });



回答2:


The variable v is a Button, it not have a text, you have to do it in your EditText or TextView (where you have your text to be copied)




回答3:


Copy to clipboard the content of a cardview (recyclerview ) Try this code.

@Override
protected void populateViewHolder(Attitude.BlogViewHolder viewHolder, Blog model, int position) {
    viewHolder.setText(model.getText());

    final String text = model.getText();
    viewHolder.copy.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            myClipboard = (ClipboardManager) v.getContext().getSystemService(Context.CLIPBOARD_SERVICE);

            myClip = ClipData.newPlainText("label", text);
            myClipboard.setPrimaryClip(myClip);
            Toast.makeText(v.getContext(), "Copied to clipboard" , Toast.LENGTH_SHORT ).show();

        }
    });
}

public static class BlogViewHolder extends RecyclerView.ViewHolder {

    View mView;
    Button copy;

    public BlogViewHolder(View itemView) {
        super(itemView);
        mView = itemView;
        this.copy= (Button)itemView.findViewById(R.id.copy_btn);
    }
}



回答4:


 public static class ViewHolder extends RecyclerView.ViewHolder{
        Button copyButton;
        Button shareButton;


        TextView title;
        TextView content;
        public ViewHolder(View itemView) {
            super(itemView);
            this.title = (TextView)itemView.findViewById(R.id.card_title);
            this.content = (TextView)itemView.findViewById(R.id.card_content);
            this.copyButton= (Button)itemView.findViewById(R.id.copyButton);
            this.shareButton=(Button)itemView.findViewById(R.id.shareButton);


        }
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_item,parent,false);
        ViewHolder viewHolder = new ViewHolder(view);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        holder.title.setText(cardItems.get(position).title);
        holder.content.setText(cardItems.get(position).content);
        holder.copyButton.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){


                myClipboard = (ClipboardManager) v.getContext().getSystemService(Context.CLIPBOARD_SERVICE);


                myClip = ClipData.newPlainText("label", v.cardItems.get(position).content);
                myClipboard.setPrimaryClip(myClip);
                Toast.makeText(v.getContext(), "Copied to clipboard" , Toast.LENGTH_SHORT ).show();

            }
        });
        holder.shareButton.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
                Intent share = new Intent(Intent.ACTION_SEND);
                share.setType("text/plain");
                share.putExtra(Intent.EXTRA_TEXT, "This message is being sent to another app");
                v.getContext().startActivity(Intent.createChooser(share, "Share Text"));
            }
        });
    }


来源:https://stackoverflow.com/questions/43262912/copy-to-clipboard-the-content-of-a-cardview

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