ListView可点击false不起作用

时间:2012-07-22 09:38:15

标签: android listview

我想让Android ListView暂时无法点击,直到我的AysncTask完成。

所以我用了

lv.setClickable(false);

但它不起作用。 ListView仍然需要点击次数。需要帮助。

3 个答案:

答案 0 :(得分:4)

对我有用的是在我的列表项的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具有焦点,它现在将获取click事件,然后将其删除,因为它不可点击。

希望这会有所帮助。如果有人知道为什么这种方法有效,请加入。

答案 1 :(得分:1)

请改为尝试:

    lv.setEnabled(false);
编辑:好抱歉我的错。

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

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

我希望这有效。

答案 2 :(得分:0)

  1. 您是否尝试过setFocusable / setEnabled种方法?
  2. 您可以在onItemClick方法中使用:
  3. if(!mWorking){ mWorking = true; //do the job... }

    1. 您可以尝试实施SimpleOnGestureDetector并覆盖onSingleTapConfirmed方法。谷歌有很多关键。
    2. 我希望这会对你有所帮助