最近项目中遇到需要有复制文本的功能,难点有一个,就是在listview中如何拿到item的内容,不多说上代码
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
item_id = info.position;
MenuInflater inflater = new MenuInflater(this);
inflater.inflate(R.menu.menu_main,menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_copy://复制
CopyToClipboard(this,data.get(item_id).content);
break;
default:
return super.onContextItemSelected(item);
}
adapter.notifyDataSetChanged();
return true;
}
public static void CopyToClipboard(Context context,String text){
ClipboardManager clipboard = (ClipboardManager)context.getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip=ClipData.newPlainText("simple text",text);
clipboard.setPrimaryClip(clip);
Toast.makeText(context, "你已复制到剪切板", Toast.LENGTH_SHORT).show();
}
menu
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">
<!--<item android:id="@+id/action_settings" android:title="删除"-->
<!--android:orderInCategory="100" app:showAsAction="never" />-->
<item android:id="@+id/action_copy" android:title="复制"
android:orderInCategory="100" app:showAsAction="never" />
<!--<item android:id="@+id/action_pasty" android:title="粘贴"-->
<!--android:orderInCategory="100" app:showAsAction="never" />-->
<!--<item android:id="@+id/action_add" android:title="清空"-->
<!--android:orderInCategory="100" app:showAsAction="never" />-->
</menu>
这里有一个最重要的知识点就是TextView的一个属性,只有把它设置了,才能自由的选择复制,粘贴
android:textIsSelectable="true"
data是我的数据集合