2011-05-07 47 views
1

我有一個ListView與自定義列表適配器(它擴展了BaseAdapter)。視圖中創建並填充:我的列表項ListView項上的Android SpannableString

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_vertical|center_horizontal" 
    > 
    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:layout_gravity="center_vertical" 
     > 
     <TextView 
      android:id="@+id/txtOne" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textStyle="bold" 
     /> 

     <TextView 
      android:id="@+id/txtTwo" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
     /> 
    </LinearLayout> 
</LinearLayout> 

在getView方法的項目視圖從這個佈局膨脹:

if (convertView == null) { 
    convertView = inflater.inflate(R.layout.teste, parent, false); 
} 
((TextView) convertView.findViewById(R.id.txtOne)).setText("Some text"); 
final SpannableString ss = new SpannableString("Another text"); 
ss.setSpan(new ClickableSpan() { 
    @Override 
    public void onClick(final View widget) { 
     startActivity(new Intent(widget.getContext(), AnotherActivity.class)); 
    } 
    }, 0, ss.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
((TextView) convertView.findViewById(R.id.txtTwo)).setText(ss); 

它顯示我對項目的看法spannable字符串,但我不能碰在上面。我只能觸摸整個項目視圖。

我想開始另一個活動,當用戶觸及spannable字符串,但我也希望整個項目視圖toucheable。

我錯過了什麼?

+0

每當getView()被調用時,如果您分配了新的SpannableString,它是否最優? – 2014-02-20 12:16:52

回答

3

你需要做兩件事情之一:

  1. TextViewandroid:linksClickable="true"佈局

  2. 代碼:txtViewTwo.setMovementMethod(LinkMovementMethod.getInstance());

最終的結果將是相同的。

+0

快速回答answerer或OP如果你們都還在4年左右haha:這個解決方案是否適用於ListView項目本身也可點擊的列表視圖中的可跨越的字符串?我面臨這個問題,當使用Joe的第二個建議,設置移動方法,然後我的佈局在列表視圖中的spannable字符串變得可點擊,但列表視圖項本身不可點擊。 – ThePartyTurtle 2015-07-01 15:51:06