2013-01-19 38 views
0

我有一個ExpandableListViewOnChildClickListener,但是如何在點擊時將刪除線添加到TextView從ExpandableListView編輯textView子(刪除線)

mExpandableList.setOnChildClickListener(新OnChildClickListener(){

 @Override 
     public boolean onChildClick(ExpandableListView parent, View v, 
       int groupPosition, int childPosition, long id) { 

      Toast.makeText(getApplicationContext(), 
        "Group: " + groupPosition + " Child: " + childPosition, Toast.LENGTH_SHORT).show(); 

      //Do something (i.e. add strikethourgh) to the TextView clicked.. 

      return false; 
     } 
    }); 

的活動我的佈局文件是

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    > 

    <TextView 
     android:id="@+id/calc_text" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/hello_world" /> 

    <ExpandableListView 
     android:id="@+id/calc_expandable_list" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:cacheColorHint="#00000000" 
     android:listSelector="@android:color/transparent" 
     android:transcriptMode="alwaysScroll" /> 

</LinearLayout> 

而ExpandableList的孩子是

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/list_item_child" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center_vertical" 
    android:orientation="horizontal" > 

    <TextView 
     android:id="@+id/list_item_text_child" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="5dp" 
     android:padding="10dp" 
     android:textSize="20sp" /> 
</LinearLayout> 

錯誤來自LogCat的是:

W/dalvikvm(28424): threadid=1: thread exiting with uncaught exception (group=0x4001d5a0) E/AndroidRuntime(28424): FATAL EXCEPTION: main 
E/AndroidRuntime(28424): java.lang.ClassCastException: android.widget.LinearLayout E/AndroidRuntime(28424):  at com.test.skylderhverandre.Calc$1.onChildClick(Calc.java:185) 
E/AndroidRuntime(28424): at 
android.widget.ExpandableListView.handleItemClick(ExpandableListView.java:588) 
E/AndroidRuntime(28424): at 
android.widget.ExpandableListView.performItemClick(ExpandableListView.java:527) 
E/AndroidRuntime(28424): at 
android.widget.AbsListView$PerformClick.run(AbsListView.java:1831) 
E/AndroidRuntime(28424): at 
android.os.Handler.handleCallback(Handler.java:587) 
E/AndroidRuntime(28424): at 
android.os.Handler.dispatchMessage(Handler.java:92) 
E/AndroidRuntime(28424): at android.os.Looper.loop(Looper.java:150) 
E/AndroidRuntime(28424): at 
android.app.ActivityThread.main(ActivityThread.java:4385) 
E/AndroidRuntime(28424): at 
java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(28424): at 
java.lang.reflect.Method.invoke(Method.java:507) 
E/AndroidRuntime(28424): at 
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849) 
E/AndroidRuntime(28424): at 
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607) 
E/AndroidRuntime(28424): at dalvik.system.NativeStart.main(Native Method) 

回答

0

您必須使用SpannableString這樣的:

CharSequence value = ((TextView)((LinearLayout)v).getChildAt(0)).getText(); 
if(value!=null){ 
    SpannableString spannableString = new SpannableString(value); 
    spannableString.setSpan(new StrikethroughSpan(), 0, value.length(), 0); 
    ((TextView)((LinearLayout)v).getChildAt(0)).setText(spannableString); 
} 
+0

看起來不錯,但它在第一線得到一個錯誤。不能得到孩子的textview,我認爲.. – EirikO

+0

也許照顧空值。 (見編輯) 我不認爲這可以用一個空'v'來調用。 (把斷點看看發生了什麼問題) – ben75

+0

我嘗試了一下,但第一行失敗了。 (任何東西都返回)。 在我的問題中添加了xml代碼,如果這可能是有趣的。 – EirikO