【问题标题】:Copy to clipboard the content of a cardview将卡片视图的内容复制到剪贴板
【发布时间】:2017-04-06 18:17:58
【问题描述】:

我已经实现了一个recycler card view,想用一个按钮点击的方法来复制cardView的内容。卡片视图中有两个文本,我只想复制内容,不同卡片的内容不同。我怎样才能做到这一点? 这是我的 Cardview 适配器。

  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(),内容无法解析。

【问题讨论】:

    标签: java android clipboard android-adapter android-cardview


    【解决方案1】:

    试试下面的

    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】:

      变量 v 是 Button,它没有文本,您必须在 EditTextTextView 中进行操作(要复制文本)

      【讨论】:

        【解决方案3】:

        将卡片视图(recyclerview)的内容复制到剪贴板 试试这个代码。

        @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"));
                      }
                  });
              }
          

          【讨论】:

          • 请解释一下你做了什么以及为什么?
          猜你喜欢
          • 1970-01-01
          • 2011-05-18
          • 1970-01-01
          • 1970-01-01
          • 2019-10-30
          • 2020-10-10
          • 1970-01-01
          • 2011-04-26
          • 2014-07-19
          相关资源
          最近更新 更多