Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SimpleCrsorAdapter无法填充TextView_Android - Fatal编程技术网

Android SimpleCrsorAdapter无法填充TextView

Android SimpleCrsorAdapter无法填充TextView,android,Android,我正在处理一个应用程序,它的调用日志部分名为代码,用于填充两个数组,并填充SimpleCorsorAdapter,以防应用程序崩溃。当我调试应用程序并检查阵列是否已填充,但在创建SimpleCorsOrAdapter时停止 代码: 根据日志猫,您的代码在SimpleCorsorAdapter bindView方法()中崩溃,java.lang.ArrayIndexOutOfBoundsException:length=3;索引=3 如果您查看,那么它将首先获取“to”参数中的元素数量-这与int

我正在处理一个应用程序,它的调用日志部分名为代码,用于填充两个数组,并填充SimpleCorsorAdapter,以防应用程序崩溃。当我调试应用程序并检查阵列是否已填充,但在创建SimpleCorsOrAdapter时停止

代码:


根据日志猫,您的代码在SimpleCorsorAdapter bindView方法()中崩溃,
java.lang.ArrayIndexOutOfBoundsException:length=3;索引=3

如果您查看,那么它将首先获取“to”参数中的元素数量-这与int[]toviews变量相对应-该变量有5个元素

然后它在游标上循环,并尝试通过索引从中获取5个元素-但是在元素3失败,导致崩溃-因为显然游标只有3列

,并且您试图传入非列名的字符串(dir和callday)

解决这一问题的一种方法是将SimpleCursorAdapter子类化并重写bindView方法——您可以将链接的源作为基础,并修改它,使其以您需要的方式工作


另一个解决方案是创建自己的适配器。

您的
光标
没有足够的列。这似乎就是问题所在。在这里放置一个断点,查看
managedCursor
实例

如果查看碰撞发生的位置,您会看到:

 String text = cursor.getString(from[i]);
这意味着您的光标可能没有足够的列

编辑:

根在别的地方,我想。正如Anti正确指出的,您使用的列名不正确。但是,列数组在
SimpleCursorAdapter
构造函数中被过滤,并且只接受有效的列名


因此,并不是您的光标没有足够的列,而是因为您的
from
(列)和
to
(视图)计数不相等而失败。

crash!。你能发布stacktrace吗???@Raghunandan完成了,先生<代码>长度=3;index=3索引从0(0,1,2)开始,因此索引3处没有元素。因此,请检查要在适配器中填充的项的大小。已填充数组:String[]fromColumns={CallLog.Calls.CACHED\u NAME,CallLog.Calls.NUMBER,CallLog.Calls.DURATION,dir,callday.toString();好的,我明白你的意思了,但不是传递dir,而是传递CallLog.Calls.TYPE和CallLog.Calls.DATE,并通过适配器以格式化的方式显示它们?
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Text"
        android:id="@+id/number"
        android:textColor="#ffffffff"
        android:layout_above="@+id/type"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Text"
        android:id="@+id/duration"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:textColor="#ffffffff" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Text"
        android:id="@+id/caltime"
        android:layout_below="@+id/duration"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:textColor="#ffffffff" />

    <View
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:background="@android:color/darker_gray"
        android:id="@+id/view"
        android:layout_below="@+id/type"
        android:layout_alignRight="@+id/caltime"
        android:layout_alignEnd="@+id/caltime" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Text"
        android:id="@+id/type"
        android:layout_below="@+id/caltime"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:textColor="#ffffffff" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Text"
        android:id="@+id/name"
        android:layout_above="@+id/number"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:textColor="#ffffffff" />

</RelativeLayout>
05-14 15:32:37.894  32683-32683/com.nm.uzage E/dalvikvm? >>>>> Normal User
05-14 15:32:37.894  32683-32683/com.nm.uzage E/dalvikvm? >>>>> com.nm.uzage [ userId:0 | appId:10326 ]
05-14 15:32:40.096  32683-32683/com.nm.uzage E/AndroidRuntime? FATAL EXCEPTION: main
Process: com.nm.uzage, PID: 32683
java.lang.ArrayIndexOutOfBoundsException: length=3; index=3
at android.widget.SimpleCursorAdapter.bindView(SimpleCursorAdapter.java:150)
at android.widget.CursorAdapter.getView(CursorAdapter.java:254)
at android.widget.AbsListView.obtainView(AbsListView.java:2780)
at android.widget.ListView.measureHeightOfChildren(ListView.java:1274)
at android.widget.ListView.onMeasure(ListView.java:1186)
at android.view.View.measure(View.java:17594)
at android.widget.RelativeLayout.measureChild(RelativeLayout.java:689)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:473)
at android.view.View.measure(View.java:17594)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1456)
at android.view.View.measure(View.java:17594)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5398)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1410)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
at android.view.View.measure(View.java:17594)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5398)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.view.View.measure(View.java:17594)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:719)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:455)
at android.view.View.measure(View.java:17594)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5398)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.view.View.measure(View.java:17594)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5398)
at android.support.v7.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:453)
at android.view.View.measure(View.java:17594)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5398)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.view.View.measure(View.java:17594)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5398)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1410)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
at android.view.View.measure(View.java:17594)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5398)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2588)
at android.view.View.measure(View.java:17594)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2308)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1409)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1610)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1267)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6638)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:813)
at android.view.Choreographer.doCallbacks(Choreographer.java:613)
at android.view.Choreographer.doFrame(Choreographer.java:583)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:799)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5635)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
at dalvik.system.NativeStart.main(Native Method)
05-14 15:33:21.647    2721-2721/com.nm.uzage E/dalvikvm? >>>>> Normal User
05-14 15:33:21.647    2721-2721/com.nm.uzage E/dalvikvm? >>>>> com.nm.uzage [ userId:0 | appId:10326 ]
05-14 15:45:07.806    8615-8615/com.nm.uzage E/dalvikvm? >>>>> Normal User
05-14 15:45:07.806    8615-8615/com.nm.uzage E/dalvikvm? >>>>> com.nm.uzage [ userId:0 | appId:10326 ]
 String text = cursor.getString(from[i]);