【问题标题】:Android Copy and Paste Multiple TextAndroid 复制和粘贴多个文本
【发布时间】:2016-02-27 23:26:31
【问题描述】:

我使用 android 剪贴板管理器来复制和粘贴文本。像whatsapp一样,我想从listview复制多个文本并粘贴它们。 我可以这样做,

StringBuilder textMessage = new StringBuilder();
for(messsage) {
 textmessage.append(message);
 textmessage.append("\n"); 
}
ClipData clip = ClipData.newPlainText("simple text", textMessage.toString());
clipboard.setPrimaryClip(clip);

不是将多个文本消息附加到一个中,我可以将文本消息数组存储到一个剪辑对象中并使用数组索引进行检索。

【问题讨论】:

  • 只做一个字符串数组列表...我不明白这个问题
  • ClipData.newPlainText 不将字符串数组列表作为参数

标签: android listview clipboard


【解决方案1】:

我猜,您可以将多个 ClipData.Item 添加到您的 ClipData。因此,不要使用静态方法 newPlainText,而是使用

创建新的 ClipData
ClipData(ClipDescription description, ClipData.Item item)

或任何其他可用的构造函数。

我已经使用ClipDatagetItemCount 方法来证明它确实是一个索引值列表,因此您绝对可以使用getItemAt 从任何位置获取任何ClipData.Item,前提是位置不引导您到OutOfBoundException。下面的代码非常新手,但我相信可以达到演示的目的。如果您需要更多帮助,请告诉我。

public class MainActivity extends AppCompatActivity {
    ClipboardManager clipboard;
    static int var = 0;
    ClipData clipData;
    TextView tvClip;

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

        tvClip = (TextView) findViewById(R.id.tv_add);

        clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);

        Button btnClip = (Button) findViewById(R.id.btn_add);
        btnClip.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ClipData.Item item = new ClipData.Item("var" + var);
                if (clipData == null) {
                    clipData = new ClipData(new ClipDescription("your_clip_description", new String[]{ClipDescription.MIMETYPE_TEXT_PLAIN}), item);
                    clipboard.setPrimaryClip(clipData);
                }
                clipData.addItem(item);
            }
        });

        Button showClip = (Button) findViewById(R.id.btn_show);
        showClip.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (clipData != null)
                    tvClip.setText("count = " + clipData.getItemCount());
            }
        });
    }
}

【讨论】: