Android 用于ListView相关问题的CursorAdapter和McClickListener

Android 用于ListView相关问题的CursorAdapter和McClickListener,android,android-listview,android-contentprovider,onitemclicklistener,android-cursor,Android,Android Listview,Android Contentprovider,Onitemclicklistener,Android Cursor,我想回答两个问题,这两个问题与在我的ListView中使用光标适配器时,OnItemClickListener的行为有关。更具体地说: 我已经覆盖了游标适配器的getCount(),以便添加日志(以便检查何时调用它)。我注意到,当我单击列表中的一项时,我看到getCount()已经执行了两次。我真的不明白为什么会这样。。下面是被覆盖的getCount()mCursor是我的适配器的游标对象 @Override public int getCount() { if (mCursor

我想回答两个问题,这两个问题与在我的ListView中使用光标适配器时,
OnItemClickListener
的行为有关。更具体地说:

我已经覆盖了游标适配器的
getCount()
,以便添加日志(以便检查何时调用它)。我注意到,当我单击列表中的一项时,我看到getCount()已经执行了两次。我真的不明白为什么会这样。。下面是被覆盖的
getCount()
mCursor
是我的适配器的游标对象

   @Override
public int getCount() {
    if (mCursor != null) {
        int total = mCursor.getCount();
        Log.d(TAG, "Count of cursor is: " + total);
        return total;
    } else
        Log.e(TAG, "Count of cursor is: " + 0);
    return 0;
}
其次,我想从这个听众那里开始另一个活动。单击某个项目时,会出现以下异常:

08-26 14:15:20.487:DEBUG/AgendaAdapter(14110):游标计数为:14

08-26 14:15:20.525:DEBUG/AgendaAdapter(14110):游标计数为:14

08-26 14:15:20.535:调试/代理活动(14110):位置为:2

08-26 14:15:20.535:调试/代理活动(14110):Id为:353

08-26 14:15:20.535:INFO/ActivityManager(104):开始活动:意图{AgendaEventActivity(有额外功能)}

08-26 14:15:20.575:调试/代理活动(14110):ON暂停

08-26 14:15:20.865:信息/活动管理器(104):显示的活动代理事件:287毫秒(总计287毫秒)

08-26 14:15:20.875:DEBUG/AgendaAdapter(14110):游标计数为:14

08-26 14:15:20.875:DEBUG/AgendaAdapter(14110):游标计数为:14

08-26 14:15:20.885:DEBUG/AgendaAdapter(14110):游标计数为:14

08-26 14:15:20.885:DEBUG/AgendaAdapter(14110):游标计数为:14

08-26 14:15:20.885:DEBUG/AndroidRuntime(14110):关闭虚拟机

08-26 14:15:20.885:WARN/dalvikvm(14110):threadid=1:线程退出时出现未捕获异常(组=0x40028a00) 08-26 14:15:20.905:错误/AndroidRuntime(14110):致命异常:主 08-26 14:15:20.905:ERROR/AndroidRuntime(14110):java.lang.IllegalStateException:仅当光标有效时才应调用此函数

因此,
getCount()
是在我单击一个项目时执行的,然后使用所单击项目的
pos
id
onItemClickListener
跟踪两个日志,然后再次调用
getCount()
。。。最后,当前活动被暂停,我启动的新活动得到了这个
非法状态异常
,我不明白为什么

对于游标,我在启动它时使用了managedquery()

任何帮助都将不胜感激!谢谢你抽出时间

异常的堆栈跟踪是:

08-26 14:35:17.735:错误/AndroidRuntime(24173):致命异常:主

08-26 14:35:17.735:ERROR/AndroidRuntime(24173):java.lang.IllegalStateException:仅当光标有效时才应调用此函数 08-26 14:35:17.735:ERROR/AndroidRuntime(24173):在android.widget.CursorAdapter.getView(CursorAdapter.java:175)

08-26 14:35:17.735:ERROR/AndroidRuntime(24173):位于android.widget.AbsListView.obtainView(AbsListView.java:1294)

08-26 14:35:17.735:ERROR/AndroidRuntime(24173):在android.widget.ListView.makeAndAddView(ListView.java:1727)

08-26 14:35:17.735:ERROR/AndroidRuntime(24173):位于android.widget.ListView.fillSpecific(ListView.java:1272)

08-26 14:35:17.735:ERROR/AndroidRuntime(24173):位于android.widget.ListView.layoutChildren(ListView.java:1591)

08-26 14:35:17.735:ERROR/AndroidRuntime(24173):在android.widget.AbsListView.onLayout(AbsListView.java:1147)

08-26 14:35:17.735:ERROR/AndroidRuntime(24173):在android.view.view.layout(view.java:7034)上

08-26 14:35:17.735:ERROR/AndroidRuntime(24173):在android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249)

08-26 14:35:17.735:ERROR/AndroidRuntime(24173):位于android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125)

08-26 14:35:17.735:ERROR/AndroidRuntime(24173):在android.widget.LinearLayout.onLayout(LinearLayout.java:1042)

08-26 14:35:17.735:ERROR/AndroidRuntime(24173):在android.view.view.layout(view.java:7034)上

08-26 14:35:17.735:ERROR/AndroidRuntime(24173):在android.widget.RelativeLayout.onLayout(RelativeLayout.java:909)

08-26 14:35:17.735:ERROR/AndroidRuntime(24173):在android.view.view.layout(view.java:7034)上

08-26 14:35:17.735:ERROR/AndroidRuntime(24173):在android.widget.FrameLayout.onLayout(FrameLayout.java:333)上

08-26 14:35:17.735:ERROR/AndroidRuntime(24173):在android.view.view.layout(view.java:7034)上

08-26 14:35:17.735:ERROR/AndroidRuntime(24173):在android.widget.FrameLayout.onLayout(FrameLayout.java:333)上

08-26 14:35:17.735:ERROR/AndroidRuntime(24173):在android.view.view.layout(view.java:7034)上

08-26 14:35:17.735:ERROR/AndroidRuntime(24173):在android.view.ViewRoot.performTraversals(ViewRoot.java:1049)

08-26 14:35:17.735:ERROR/AndroidRuntime(24173):在android.view.ViewRoot.handleMessage(ViewRoot.java:1744)

08-26 14:35:17.735:ERROR/AndroidRuntime(24173):在android.os.Handler.dispatchMessage(Handler.java:99)上

08-26 14:35:17.735:ERROR/AndroidRuntime(24173):在android.os.Looper.loop(Looper.java:143)上

08-26 14:35:17.735:ERROR/AndroidRuntime(24173):位于android.app.ActivityThread.main(ActivityThread.java:4914)

08-26 14:35:17.735:ERROR/AndroidRuntime(24173):位于java.lang.reflect.Method.invokenactive(本机方法)

08-26 14:35:17.735:ERROR/AndroidRuntime(24173):位于java.lang.reflect.Method.invoke(Method.java:521)

08-26 14:35:17.735:ERROR/AndroidRuntime(24173):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)

08-26