[Android] TextView 내용중간에 이벤트 넣기!!!

TextView는 하나이고, 여기에 들어가는 문자열도 하나.
그런데 중간에 링크경로가 들어있다.
다른 문자열은 그대로 두고, 링크경로에만 이벤트를 주고 싶은거지.
어떻게 해야 하는걸까?

내가 테스트한 환경은 총 3개의 클래스이다.
메인클래스/서비클래스/ClickableSpan을 상속한 새로운 클래스.

<메인 클래스>

import android.app.Activity;
import android.os.Bundle;
import android.text.Spannable;
import android.text.method.LinkMovementMethod;
import android.widget.TextView;
import android.widget.TextView.BufferType;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        String str = "Some text http://twitpic.com/3701kz Mac is very good.";
        TextView mainTextView = (TextView) findViewById(R.id.mainTextView);

        mainTextView.setMovementMethod(LinkMovementMethod.getInstance());
        mainTextView.setText(str, BufferType.SPANNABLE);

        Spannable spans = (Spannable) mainTextView.getText();
       
        //string parsing...
  int startIndex = str.indexOf("http://twitpic.com/");
  String resultSubString = str.substring(startIndex);
  int endIndex = resultSubString.indexOf(" ");        
       
  //clickable processing...
        MyClickable clickable = new MyClickable(MainActivity.this);
 spans.setSpan(clickable, startIndex, (endIndex + startIndex), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
     }
}

<ClickableSpan을 상속한 새로운 클래스>

import android.app.Activity;
import android.content.Intent;
import android.text.TextPaint;
import android.text.style.ClickableSpan;
import android.view.View;

class MyClickable extends ClickableSpan {
 private Activity activity;
 
 public MyClickable(Activity activity) {
  super();
  this.activity = activity;
 }

 public void updateDrawState(TextPaint ds) {
  super.updateDrawState(ds);
  ds.setUnderlineText(false);
 }

 @Override
 public void onClick(View widget) {
  Intent intent = new Intent(this.activity, SubActivity.class);
  this.activity.startActivity(intent);
 }
}
<서브클래스>

알아서 구현하자 -_-;

<결과이미지>

002