2

我想让 AndroidListView有一段时间不可点击,直到我AysncTask完成。

所以我用

lv.setClickable(false);

但它不起作用。ListView仍然需要点击。需要帮忙。

4

3 回答 3

5

对我有用的是在 XML 中为我的列表项设置两个属性。我设置clickable="false"focusable="true"。所以我的每个列表项都在膨胀一个类似于这个的 XML 文件:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:clickable="false"
    android:focusable="true" >

    <!-- Children here -->

</LinearLayout>

我不确定为什么会这样,尽管这是我的猜测:

  • 只使用 clickable 属性是行不通的,因为虽然 LinearLayout 不可点击,但它里面的子元素仍然是可点击的。然后孩子们得到点击事件但不使用它并将其转发到LinearLayout。

  • 通过使 LinearLayout 可聚焦,它现在将接受单击事件,然后将其删除,因为它不可单击。

希望这可以帮助。如果有人确切知道为什么这种方法有效,请加入。

于 2013-10-02T04:13:35.397 回答
1

试试这个:

    lv.setEnabled(false);

编辑:好的,对不起我的错。

我认为问题在于它不是您单击的 ListView,而是代表 ListView 中每个项目的 View。所以试试这个:

View itemView = lv.findViewTraversal(id_of_your_view);
itemView.setClickable(false);

我希望这行得通。

于 2012-07-22T09:49:02.120 回答
0
  1. 你试过setFocusable/setEnabled方法吗?
  2. 您可以在 onItemClick 方法中:

if(!mWorking){ mWorking = true; //do the job... }

  1. 您可以尝试实现SimpleOnGestureDetector并覆盖onSingleTapConfirmed方法。google上有很多tuts。

我希望这能帮到您

于 2012-07-22T09:56:13.387 回答