0

У меня есть настраиваемый адаптер ListView, который содержит 2 текстовых поля для каждого элемента. При длинном нажатии на элемент, который я хочу иметь, чтобы скопировать текст из 1 из этих текстовых просмотров в буфер обмена, вопрос в том, как я могу получить текст Textview?Контекстный ActionBar копирует текст из пользовательского ListView

public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 
     switch (item.getItemId()) { 
      case R.id.copy: 
       Toast.makeText(getActivity(),"Text copied to clipboard.", Toast.LENGTH_SHORT).show(); 
    //HOW CAN I GET THE TEXT? 
       mode.finish(); 
       return true; 
      case R.id.share: 
       return false; 
      default: 
       return false; 
     } 
    } 

ответ

0
ListView list = (ListView) findViewById(R.id.yourList);  
list.setOnItemLongClickListener(new OnItemLongClickListener() { 
public void onItemLongClick(AdapterView<?> a, View v, int position,long id) { 
       TextView yourFirstTextView = (TextView) v.findViewById(R.id.yourFirstTextViewId); 
       TextView yourSecondTextView = (TextView) v.findViewById(R.id.yourSecondTextView); 
       copyTextToClipboard(yourFirstTextView);//if you want to copy your first textview 
       copyTextToClipboard(yourSecondTextView);//if you want to copy your second textview 
}); 

public void copyTextToClipboard(TextView txtView){ 
    int sdk = android.os.Build.VERSION.SDK_INT; 
    if(sdk < android.os.Build.VERSION_CODES.HONEYCOMB) { 
     android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); 
     clipboard.setText(txtView.getText().toString()); 
    } else { 
     android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); 
     android.content.ClipData clip = android.content.ClipData.newPlainText("text label",txtView.getText().toString()); 
     clipboard.setPrimaryClip(clip); 
    } 
} 

Я не проверить этот код, но он может работать.

+0

Привет, я не хочу копировать текст в LongClick, я хочу, чтобы пользователь решил, хочет ли он копировать или распространять текст. я уже создал кабину (контекстный ActionBar) на LongClick, которая отображает эти 2 кнопки в панели действий. Проблема в том, что я не знаю, как получить доступ к этим TextViews из этих кнопок. – james

+0

Вы не должны получать доступ к текстовым представлениям. Вы должны получить данные от вашего адаптера массива. Единственное, что вам нужно запомнить, это позиция щелкнутого вида. Так что поставьте это в переменную. – greenapps

+0

Хорошо, я попробую это, и copyTextToClipboard, который вы мне дали, не рекомендуется, каков новый метод? – james