Android:检查listview完成实现或准备好

时间:2014-06-10 08:34:17

标签: android android-listview android-lifecycle android-handler

问题

我想在onResume()之后以编程方式单击Listview并保留ListView,但我不知道何时何地应该实现点击逻辑,因为现在它强制关闭因为我早期调用函数(我检查返回视图是空)

我使用Handler()Runnable()和Thread()方法因为我认为这会在listview完成实现后对我的代码进行排队。

我该怎么办?

使用HANDLER RUNNABLE和THREAD的示例

final Handler handler = new Handler();
            Runnable runnable = new Runnable() {
                @Override
                public void run() {
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            DataManager dm = new DataManager(getActivity());
                            for (int i = 0; i < scheduleLvItems.size(); i++) {
                                if (dm.readPF(String.valueOf(i)).equals("open")) {
                                    System.out.println("RESTATE -----------------> " + i);
                                    if(isAdded())
                                        System.out.println("TOGGLE POSITION ----> "+ i);
                                        toggle(i, false, 0);
                                }
                            }
                        }
                    });
                }
            };
            new Thread(runnable).start();

logcat的

6-10 15:19:24.349      314-314/com.bis.org.auInsight E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.NullPointerException
            at com.bis.org.auInsight.ScreenSlidePageFragment.toggleAnimation(ScreenSlidePageFragment.java:517)
            at com.bis.org.auInsight.ScreenSlidePageFragment.toggle(ScreenSlidePageFragment.java:487)
            at com.bis.org.auInsight.ScreenSlidePageFragment.access$100(ScreenSlidePageFragment.java:24)
            at com.bis.org.auInsight.ScreenSlidePageFragment$1$1.run(ScreenSlidePageFragment.java:117)
            at android.os.Handler.handleCallback(Handler.java:587)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:123)
            at android.app.ActivityThread.main(ActivityThread.java:4627)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:521)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
            at dalvik.system.NativeStart.main(Native Method)

第517行

listItem.getWrapper().startAnimation(resizeAnimation);

调试代码

System.out.println("DEBUG GET WRAPPER -> "+schedule_listView.getWrapper());

调查结果

06-10 15:19:24.329      314-314/com.bis.org.auInsight I/System.out﹕ DEBUG GET WRAPPER -> null

1 个答案:

答案 0 :(得分:0)

你的问题不明确。请编辑它以准确说明您的要求并简明扼要地提供所有细节。

您收到的例外原因是getWrapper()返回null。这个功能是什么?你自己实现了吗?尝试调试内部并查看原因null

此外,我认为将Runnable包裹在另一个Runnable中没有意义。为什么不直接发布内部Runnable

也许在您调用getWrapper()之前,单独线程中的代码没有运行,这就是它返回null的原因?