Quantcast
Viewing all articles
Browse latest Browse all 8068

Set value of textfield inside a ListView to empty string causes Exception

I have a ListView with a custom template which contains a few TextFields, I need to validate user input in those TextFields, in the validation, some cases imply resetting the TextField by deleting user input and setting an empty string to the TextField value. All this happens on the change event of the TextField

I had previously used a TableView and had no problems doing this, but performance of the TableView was very poor, so I decided to change to a ListView, but .

I'm using SDK 3.2.3, the app is for Android and I'm testing with a Dell Venue tablet with 4.3.

This is a simplified sample of my code with the template, data and events

myData = [{
    Payment: {
        value: ''  // Texfield starts out empty
    }
}];
 
myTemplate = {
    childTemplates: [{
        type : 'Ti.UI.TextField',
        bindId: 'Payment',
        properties : {
            textAlign : Ti.UI.TEXT_ALIGNMENT_RIGHT,
            keyboardType : Ti.UI.KEYBOARD_DECIMAL_PAD
        },
        events:{
            change: function (e){
                if (doesNotMeetValidation){
                    var data = myList.sections[e.sectionIndex].getItemAt(e.itemIndex);
                    data.Payment.value = '';
                    myList.sections[e.sectionIndex].replaceItemsAt(e.itemIndex, 1, [data]);
                }
            }
        }
    }]
};

The replaceItemsAt line causes this exception:

[ERROR] :  TiApplication: (main) [7336,22967] Sending event: exception on thread: main msg:java.lang.IndexOutOfBoundsException: setSpan (1 ... 1) ends beyond length 0; Titanium 3.2.3,2014/04/22 10:17,b958a70
[ERROR] :  TiApplication: java.lang.IndexOutOfBoundsException: setSpan (1 ... 1) ends beyond length 0
[ERROR] :  TiApplication:   at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1016)
[ERROR] :  TiApplication:   at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:592)
[ERROR] :  TiApplication:   at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:588)
[ERROR] :  TiApplication:   at android.text.Selection.setSelection(Selection.java:76)
[ERROR] :  TiApplication:   at android.text.Selection.setSelection(Selection.java:87)
[ERROR] :  TiApplication:   at android.widget.EditText.setSelection(EditText.java:94)
[ERROR] :  TiApplication:   at ti.modules.titanium.ui.widget.listview.TiListView$ListViewWrapper.onLayout(TiListView.java:161)
[ERROR] :  TiApplication:   at android.view.View.layout(View.java:14291)
[ERROR] :  TiApplication:   at android.view.ViewGroup.layout(ViewGroup.java:4562)
[ERROR] :  TiApplication:   at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
[ERROR] :  TiApplication:   at android.view.View.layout(View.java:14291)
[ERROR] :  TiApplication:   at android.view.ViewGroup.layout(ViewGroup.java:4562)
[ERROR] :  TiApplication:   at org.appcelerator.titanium.view.TiCompositeLayout.onLayout(TiCompositeLayout.java:578)
[ERROR] :  TiApplication:   at android.view.View.layout(View.java:14291)
[ERROR] :  TiApplication:   at android.view.ViewGroup.layout(ViewGroup.java:4562)
[ERROR] :  TiApplication:   at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1589)
[ERROR] :  TiApplication:   at android.view.View.layout(View.java:14291)
[ERROR] :  TiApplication:   at android.view.ViewGroup.layout(ViewGroup.java:4562)
[ERROR] :  TiApplication:   at org.appcelerator.titanium.view.TiCompositeLayout.onLayout(TiCompositeLayout.java:578)
[ERROR] :  TiApplication:   at android.view.View.layout(View.java:14291)
[ERROR] :  TiApplication:   at android.view.ViewGroup.layout(ViewGroup.java:4562)
[ERROR] :  TiApplication:   at org.appcelerator.titanium.view.TiCompositeLayout.onLayout(TiCompositeLayout.java:578)
[ERROR] :  TiApplication:   at android.view.View.layout(View.java:14291)
[ERROR] :  TiApplication:   at android.view.ViewGroup.layout(ViewGroup.java:4562)
[ERROR] :  TiApplication:   at org.appcelerator.titanium.view.TiCompositeLayout.onLayout(TiCompositeLayout.java:578)
[ERROR] :  TiApplication:   at android.view.View.layout(View.java:14291)
[ERROR] :  TiApplication:   at android.view.ViewGroup.layout(ViewGroup.java:4562)
[ERROR] :  TiApplication:   at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
[ERROR] :  TiApplication:   at android.view.View.layout(View.java:14291)
[ERROR] :  TiApplication:   at android.view.ViewGroup.layout(ViewGroup.java:4562)
[ERROR] :  TiApplication:   at com.android.internal.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:349)
[ERROR] :  TiApplication:   at android.view.View.layout(View.java:14291)
[ERROR] :  TiApplication:   at android.view.ViewGroup.layout(ViewGroup.java:4562)
[ERROR] :  TiApplication:   at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
[ERROR] :  TiApplication:   at android.view.View.layout(View.java:14291)
[ERROR] :  TiApplication:   at android.view.ViewGroup.layout(ViewGroup.java:4562)
[ERROR] :  TiApplication:   at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1976)
[ERROR] :  TiApplication:   at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1730)
[ERROR] :  TiApplication:   at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004)
[ERROR] :  TiApplication:   at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5487)
[ERROR] :  TiApplication:   at android.view.Choreographer$CallbackRecord.run(Choreographer.java:791)
[ERROR] :  TiApplication:   at android.view.Choreographer.doCallbacks(Choreographer.java:591)
[ERROR] :  TiApplication:   at android.view.Choreographer.doFrame(Choreog
[ERROR] :  TiApplication:   at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:777)
[ERROR] :  TiApplication:   at android.os.Handler.handleCallback(Handler.java:730)
[ERROR] :  TiApplication:   at android.os.Handler.dispatchMessage(Handler.java:92)
[ERROR] :  TiApplication:   at android.os.Looper.loop(Looper.java:150)
[ERROR] :  TiApplication:   at android.app.ActivityThread.main(ActivityThread.java:5146)
[ERROR] :  TiApplication:   at java.lang.reflect.Method.invokeNative(Native Method)
[ERROR] :  TiApplication:   at java.lang.reflect.Method.invoke(Method.java:525)
[ERROR] :  TiApplication:   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
[ERROR] :  TiApplication:   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
[ERROR] :  TiApplication:   at dalvik.system.NativeStart.main(Native Method)
Please Help!!!

Thank you so much for any help.


Viewing all articles
Browse latest Browse all 8068

Trending Articles