2017-02-17 24 views
0

Я хочу скопировать значение textview из элемента списка в буфер обмена, нажав кнопку, находящуюся в элементе listview. Я могу получить значение textview из элемента listview в listview onitemclick. Но я хочу получить это значение, используя контекстное меню. Итак, как я могу получить значение из элемента listview. У меня есть TextView в держатель class.Here мой код:Как скопировать значение textview из элемента списка в буфер обмена, используя контекстное меню в android?

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

ответ

0

Во-первых, вы должны получить содержимое строк для копирования. Я думаю, что ты можешь управлять собой. Теперь вы можете скопировать этот контент в буфер обмена, используя этот код:

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); 

Надеюсь вам помочь!

+0

вы можете видеть, что текст, который заполнен в списке, получен из edittext. Как получить текстовое значение с помощью кнопки share_style? –

+0

Как мне скопировать содержимое строки? ViewHolder h = новый ViewHolder(); Строка s = h.textView.getText(). ToString(); Не работает. –

+0

ОК, позвольте мне ввести код ... –