Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中使用上下文菜单将textview值从listview项复制到剪贴板?_Android_Listview_Baseadapter - Fatal编程技术网

如何在android中使用上下文菜单将textview值从listview项复制到剪贴板?

如何在android中使用上下文菜单将textview值从listview项复制到剪贴板?,android,listview,baseadapter,Android,Listview,Baseadapter,我想使用listview项目中的按钮单击将textview值从listview项目复制到剪贴板。我可以从listview上的listview项中获取textview值。但是我想通过上下文菜单得到这个值。那么,如何从listview项中获取值呢。我在Holder类中有textview。以下是我的代码: public View getView(final int position, View convertView, ViewGroup parent) { View

我想使用listview项目中的按钮单击将textview值从listview项目复制到剪贴板。我可以从listview上的listview项中获取textview值。但是我想通过上下文菜单得到这个值。那么,如何从listview项中获取值呢。我在Holder类中有textview。以下是我的代码:

    public View getView(final int position, View convertView, ViewGroup parent) {
            View v = convertView;
            final ViewHolder holder;
            LayoutInflater li = getActivity().getLayoutInflater();
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(getActivity().LAYOUT_INFLATER_SERVICE);

            if (v == null) {
                holder = new ViewHolder();
                v = inflater.inflate(R.layout.single_row, parent, false);
                holder.favourit_style = (ImageView) v.findViewById(R.id.favourit_style);
                holder.share_style = (ImageView) v.findViewById(R.id.share_style);
                holder.textView = (TextView) v.findViewById(R.id.text_Style);
                v.setTag(holder);
            } else {
                holder = (ViewHolder) v.getTag();
            }

            editText.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {

                }

                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {

                }

                @Override
                public void afterTextChanged(Editable s) {
                    holder.textView.setText("" + s.toString() + "");

                }
            });
            registerForContextMenu(holder.share_style);
            return v;
        }

public boolean onContextItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case COPY:
            ViewHolder h = new ViewHolder();
            String s = h.textView.getText().toString();
            if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB) {
                android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getActivity().getSystemService(Context.CLIPBOARD_SERVICE);
                clipboard.setText(s);
            } else {
                android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getActivity().getSystemService(Context.CLIPBOARD_SERVICE);
                android.content.ClipData clip = android.content.ClipData.newPlainText("Copied Text", s);
                clipboard.setPrimaryClip(clip);
            }
            break;
   return super.onContextItemSelected(item);
}
public View getView(最终int位置、视图转换视图、视图组父视图){
视图v=转换视图;
最终持票人;
LayoutInflater li=getActivity().getLayoutInflater();
LayoutFlater充气器=(LayoutFlater)上下文.getSystemService(getActivity().LAYOUT\u充气器\u服务);
如果(v==null){
holder=新的ViewHolder();
v=充气机。充气(右布局。单行,父级,假);
holder.favorit_style=(ImageView)v.findViewById(R.id.favorit_style);
holder.share\u style=(ImageView)v.findViewById(R.id.share\u style);
holder.textView=(textView)v.findViewById(R.id.text\u样式);
v、 setTag(支架);
}否则{
holder=(ViewHolder)v.getTag();
}
editText.addTextChangedListener(新的TextWatcher(){
@凌驾
更改前文本之前的公共void(字符序列s、int start、int count、int after){
}
@凌驾
public void onTextChanged(字符序列、int start、int before、int count){
}
@凌驾
公共无效后文本已更改(可编辑){
holder.textView.setText(“+s.toString()+”);
}
});
registerForContextMenu(holder.share_样式);
返回v;
}
公共布尔值onContextItemSelected(MenuItem项){
开关(item.getItemId()){
案例副本:
ViewHolder h=新的ViewHolder();
字符串s=h.textView.getText().toString();
if(android.os.Build.VERSION.SDK_INT
首先,您必须获取要复制的字符串内容。我认为您可以自己管理。现在您可以使用以下代码将该内容复制到剪贴板:

android.content.ClipboardManager clipboard = (android.content.ClipboardManager) mActivity.getSystemService(Context.CLIPBOARD_SERVICE);
android.content.ClipData clip = android.content.ClipData.newPlainText("Clip", textToCopy);
clipboard.setPrimaryClip(clip);

希望对您有所帮助!

您可以看到listview中填充的文本是从edittext获取的。如何使用按钮共享方式单击获取textvalue?如何获取要复制的字符串内容?ViewHolder h=new ViewHolder();String s=h.textView.getText().toString();它不起作用。你从哪里调用
registerForContextMenu
?感谢它的工作。还有一件事,我想在whatsapp、facebook等应用自定义字体上共享文本。这怎么可能?自定义字体只能在目标应用程序(如whatsapp、facebook)支持的情况下共享。