2

这个问题被问了很多次,我系统地检查了每个问题,并试图找到哪个版本的performItemClick作品。不幸的是,尽管调用了我的 onclick 方法,但我无法让它们中的任何一个工作。

我有一个嵌入到片段中的 5 个项目的列表视图。该片段由片段状态页面适配器和视图页面控制。我正在尝试恢复保存的状态。

        lv.setAdapter(new SimpleAdapter(getActivity(), list,
                R.layout.list_imageview, new String[] { "answer" },
                new int[] { android.R.id.text1 }));

简单的适配器采用自定义布局,该布局在布局中具有 textview 和 imageview。最初,图像视图为空,单击时将其设置为勾号或十字。这在我自己单击项目时有效,但不能以编程方式工作,如下所示:

@Override
    public void onViewStateRestored(Bundle savedInstanceState) {
        super.onViewStateRestored(savedInstanceState);
        if (savedInstanceState != null) {
            for (int i = 0; i < 5; i++) {
                lv.performItemClick(lv.getAdapter().getView(i, null, null),
                        i, i);
                Log.e("restoring state", "" + i);
            }
        }
    }

我可以确认onViewStateRestored被称为onItemClick也被称为。我认为这是我执行项目单击方式的问题。我目前只是想让它工作;我知道我尚未检查已单击哪些项目以选择性地单击它们,但这很容易boolean[]

我感谢您的帮助,对于这样一个重复了好几次的简单问题,我深表歉意;尽管阅读了它们,但我仍然无法让它们工作。

4

1 回答 1

1

我认为这是我执行项目单击方式的问题。

现在你调用通过适配器的方法performItemClick给它一个 View的创建。getView问题是,如果您设置的图像与回调接收的行视图有某种关联onItemClick,您将看不到任何结果,因为该视图与实际看到的行视图无关(它是“在空中”)屏幕(或出现在 中ListView)。但我只是猜测。

无论如何,您不应该将该ImageView工作绑定到OnItemClickListener,您应该在适配器级别(并调用notifydataSetChanged())实现它,尤其是当您尝试一次设置多行时。

于 2013-01-26T10:53:33.137 回答