listview onitemclicklistener总是没有响应

时间:2011-02-21 06:58:43

标签: android listview

我正在使用以下代码。

    listView = (ListView) findViewById(R.id.SkiiplistListView);
    listView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View v, int position,
                long arg3) {
            // TODO Auto-generated method stub
            System.out.println("--position--"+position);
            Intent intent = new Intent(SkiipListScreen.this, SkiiperProfileScreen.class);
            Bundle bundle = new Bundle();
            bundle.putString("uid", uid);
            intent.putExtras(bundle);
            startActivity(intent);
        }

    });

我也尝试了下面的内容。

   listView = (ListView) findViewById(R.id.SkiiplistListView);
   listView.setOnItemClickListener(this);

    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
    // TODO Auto-generated method stub

    System.out.println("--position--"+position);
    Intent intent = new Intent(this, SkiiperProfileScreen.class);
    Bundle bundle = new Bundle();
    bundle.putString("uid", uid);
    intent.putExtras(bundle);
    startActivity(intent);

    }

我在很多课程中都使用过这种代码。 但在某些类中,此代码会响应,而在某些类中则不会。在许多情况下,经过一段时间后,它会在一段时间后开始响应。

我不知道为什么会这么不协调。如果您有任何答案,请告诉我。

2 个答案:

答案 0 :(得分:3)

你所说的似乎是不可能的。

   listView.setOnItemClickListener(new OnItemClickListener()...

始终有效。

检查您在适配器中使用的单个单元格布局XML,以获取列表视图,并确保您填写的元素不可单击。它会阻止点击listitem。检查XML代码。我认为这应该可以解决问题

答案 1 :(得分:1)

您没有显示布局XML,但是在listview中是否有其他可聚焦对象?例如,复选框或编辑文本?你会发现这些对象会窃取listitem中的触摸事件。在视觉上,看起来列表项已经响应,但触摸事件被发送到复选框。

如果是这种情况,处理起来很简单 - 只需为复选框调用setFocusable (false)(或编辑文本等)。

当然,这意味着您需要自己处理该对象的触摸事件。