1

我有RecyclerView,在每一行中,我有一個CardView。我有三個TextView s。我想在onClick事件期間複製CardViewTextView之一的文本。這是我到目前爲止:將文本從CardView複製到剪貼板

public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 

    public TextView ora, onoma_xristi, minima; 
    public CardView card; 

    public ViewHolder(View view) { 
     super(view); 

     card = (CardView) view.findViewById(R.id.single_row_cardview); 
     ora = (TextView) view.findViewById(R.id.ora); 
     onoma_xristi = (TextView) view.findViewById(R.id.onoma_xristi); 
     minima = (TextView) view.findViewById(R.id.minima); 

     view.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 

     ClipboardManager myClickboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); 
     ClipData myClip = ClipData.newPlainText("text", v.minima.getText()); 
     myClickboard.setPrimaryClip(myClip); 

    } 
} 

上面的代碼是否正確?如果沒有,關於爲什麼它可能不工作的任何建議?

+0

您是否收到任何錯誤?請指明問題所在以及您試圖通過複製來實現的目標。因爲如果你想要的是獲得文本ClipboardManager是完全不必要的 – Chisko

+0

我有一個RecyclerView和在每個CardView中我有三個TextViews。我想當我點擊CardView複製剪貼板中的一個TextView的內容。我得到的錯誤(全是紅色)在getSystemService(CLIPBOARD_SERVICE) – giannisj5

回答

2

我找到了解決辦法:

ClipboardManager myClickboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); 
     ClipData myClip = ClipData.newPlainText("text", minima.getText().toString()); 
     myClickboard.setPrimaryClip(myClip); 
     Toast.makeText(v.getContext(), v.getResources().getString(R.string.antigrafike), Toast.LENGTH_SHORT).show(); 
+0

錯誤。所以看起來你試圖訪問另一個類中的剪貼板。這可能是它不適合你的原因。 – Razor

0

假設點擊功能起作用,您擁有的剪貼板實現是正確的。你錯過了一件小事:

ClipData myClip = ClipData.newPlainText("text", v.minima.getText().toString()); 

我想你忘了v.minima.getText().toString()聲明。 getText()本身不會返回String值。我很確定它會根據this返回CharSequence[]值。讓我知道你怎麼去。

+0

謝謝我這樣做,但我仍然在getSystemService(CLIPBOARD_SERVICE) – giannisj5