簡體   English   中英

如何正確轉換文本中的字符串?

[英]How convert String in Text without mistake?

我有2個列的表:GOAL(文本)和FLAG(0或1)如果FLAG的值= 1來自GOAL的文本,則得到Strike。

final TextView txt=null;
scAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
        public boolean setViewValue(View view, Cursor cursor, int columnIndex) {                                                                        
            if (view.getId() == R.id.tvText ){
                if (cursor.getInt(cursor.getColumnIndex(DB.COLUMN_FLAG)) ==1 ){
                            String goal = cursor.getString(cursor.getColumnIndex(DB.COLUMN_GOAL));                                  
                            txt.setText(goal);
                            txt.setPaintFlags(txt.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);                       
                }
            }                       
            return false;
        }

});

很簡單的代碼,但是從String轉換為Text的問題。

我看到2種方法:提高價值或解決此問題。

也許還有另一種方式...

請幫助!

10-25 19:03:17.410: ERROR/AndroidRuntime(14935): FATAL EXCEPTION: main
10-25 19:03:17.410: ERROR/AndroidRuntime(14935): **java.lang.NullPointerException**
10-25 19:03:17.410: ERROR/AndroidRuntime(14935):     at com.example.dayplan.mar2014$2.setViewValue(mar2014.java:108)
10-25 19:03:17.410: ERROR/AndroidRuntime(14935):     at android.widget.SimpleCursorAdapter.bindView(SimpleCursorAdapter.java:126)
10-25 19:03:17.410: ERROR/AndroidRuntime(14935):     at android.widget.CursorAdapter.getView(CursorAdapter.java:186)
10-25 19:03:17.410: ERROR/AndroidRuntime(14935):     at android.widget.AbsListView.obtainView(AbsListView.java:1430)
10-25 19:03:17.410: ERROR/AndroidRuntime(14935):     at android.widget.ListView.makeAndAddView(ListView.java:1745)
10-25 19:03:17.410: ERROR/AndroidRuntime(14935):     at android.widget.ListView.fillDown(ListView.java:670)
10-25 19:03:17.410: ERROR/AndroidRuntime(14935):     at android.widget.ListView.fillFromTop(ListView.java:727)
10-25 19:03:17.410: ERROR/AndroidRuntime(14935):     at android.widget.ListView.layoutChildren(ListView.java:1598)
10-25 19:03:17.410: ERROR/AndroidRuntime(14935):     at android.widget.AbsListView.onLayout(AbsListView.java:1260)
10-25 19:03:17.410: ERROR/AndroidRuntime(14935):     at android.view.View.layout(View.java:7175)
10-25 19:03:17.410: ERROR/AndroidRuntime(14935):     at android.widget.RelativeLayout.onLayout(RelativeLayout.java:912)
10-25 19:03:17.410: ERROR/AndroidRuntime(14935):     at android.view.View.layout(View.java:7175)
10-25 19:03:17.410: ERROR/AndroidRuntime(14935):     at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
10-25 19:03:17.410: ERROR/AndroidRuntime(14935):     at android.view.View.layout(View.java:7175)
10-25 19:03:17.410: ERROR/AndroidRuntime(14935):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1254)
10-25 19:03:17.410: ERROR/AndroidRuntime(14935):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1130)
10-25 19:03:17.410: ERROR/AndroidRuntime(14935):     at android.widget.LinearLayout.onLayout(LinearLayout.java:1047)
10-25 19:03:17.410: ERROR/AndroidRuntime(14935):     at android.view.View.layout(View.java:7175)
10-25 19:03:17.410: ERROR/AndroidRuntime(14935):     at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
10-25 19:03:17.410: ERROR/AndroidRuntime(14935):     at android.view.View.layout(View.java:7175)
10-25 19:03:17.410: ERROR/AndroidRuntime(14935):     at android.view.ViewRoot.performTraversals(ViewRoot.java:1142)
10-25 19:03:17.410: ERROR/AndroidRuntime(14935):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1868)
10-25 19:03:17.410: ERROR/AndroidRuntime(14935):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-25 19:03:17.410: ERROR/AndroidRuntime(14935):     at android.os.Looper.loop(Looper.java:130)
10-25 19:03:17.410: ERROR/AndroidRuntime(14935):     at android.app.ActivityThread.main(ActivityThread.java:3822)
10-25 19:03:17.410: ERROR/AndroidRuntime(14935):     at java.lang.reflect.Method.invokeNative(Native Method)
10-25 19:03:17.410: ERROR/AndroidRuntime(14935):     at java.lang.reflect.Method.invoke(Method.java:507)
10-25 19:03:17.410: ERROR/AndroidRuntime(14935):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
10-25 19:03:17.410: ERROR/AndroidRuntime(14935):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
10-25 19:03:17.410: ERROR/AndroidRuntime(14935):     at dalvik.system.NativeStart.main(Native Method)

您需要將tvText TextView分配給txt

final TextView txt=null;
scAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
        public boolean setViewValue(View view, Cursor cursor, int columnIndex) {                                                                        
            if (view.getId() == R.id.tvText ){

                //add this line
                txt = (TextView)view;

                if (cursor.getInt(cursor.getColumnIndex(DB.COLUMN_FLAG)) ==1 ){
                            String goal = cursor.getString(cursor.getColumnIndex(DB.COLUMN_GOAL));

                            txt.setText(goal);
                            txt.setPaintFlags(txt.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);                       
                }
                else txt.setPaintFlags(txt.getPaintFlags() & (~ Paint.STRIKE_THRU_TEXT_FLAG));
            }                       
            return false;
        }

});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM