【问题标题】:Android : Multiple Actions on a List View - Focus IssueAndroid:列表视图上的多个操作 - 焦点问题
【发布时间】:2010-10-04 18:09:14
【问题描述】:

我想实现一个 ListView,我可以用我的光标完成它。现在,根据您单击的哪一行,它会根据该行上按下的信息将您带到一个新活动(就像它应该和预期的那样)。我想要一个按钮来删除该行,因此用户可以按下该行的任何部分来启动新活动,但如果他们按下该行上的按钮,它会删除该行(或启动删除活动/函数)。

如果您可以查看@DroidRecord,它们的布局与我希望实现的相似。

谢谢!

克里斯。

【问题讨论】:

    标签: android listview button focus


    【解决方案1】:

    正如 Mariano Kamp 所说,将按钮添加到一行会使其“不可触摸”,但根据我的经验,如果您在按钮上设置这些属性,这个问题就会消失:

        android:focusable="false"
        android:focusableInTouchMode="false"
    

    另见How to fire onListItemClick in Listactivity with buttons in list?

    【讨论】:

      【解决方案2】:

      另一种可能的解决方法 - 您可以使用 ImageView 代替按钮,并设置 ImageView 的 onClickListener(例如,当您膨胀单元格视图时)。

      ImageView 不可聚焦,因此它不会阻止 OnListItemClick() 被调度,并且当您单击图像时,只会触发图像的侦听器。

      【讨论】:

        【解决方案3】:

        你的问题是什么?如何向列表行添加按钮?

        非常简单,正如您所期望的那样,它将被添加到行的布局中。

        不幸的是,这也会使整行“不可触碰”。我问过的谷歌开发人员说这是设计使然(据我所知),你应该使用 TouchDelegate 来解决这个问题。因为没有样本,甚至在 android 源代码中也没有,只有非常薄的 documentation 对我不起作用

        无论如何,似乎没有多少应用程序使用列表行中的按钮。我只知道我的(newsrob,参见文章列表)和闹钟。也许你可以使用上下文菜单?

        否则,丑陋的解决方案是在 getView 方法中的行视图上添加调用 setOnClickListener()。

        干杯

        【讨论】:

        • 您能解释一下如何将其设置为行视图吗?我的行被绘制为我调用的填充数据函数的一部分,该函数使用 SimpleCursorAdapter(this,R.layout.row_detail,c, from, to);我应该重写什么方法来设置 onclick 侦听器。当我在我的 create 方法上尝试它时,我的应用程序崩溃了。
        • 抱歉,我对 SimpleCursorAdapter 不熟悉……我直接使用 BaseAdapter,但 SimpleCursorAdapter 的工作原理应该差不多。查看文档,我怀疑 bindView 是适合您的方法。您会在此处获得视图(rowview)。
        • 继续 .... 要查看您的应用程序崩溃的原因(并将其包含在您的问题描述中),您可以使用“adb -e logcat”。这将显示正在运行的模拟器的日志文件。
        • 我对原木猫很熟悉,但我一定会试一试。谢谢。
        【解决方案4】:

        这不是您问题的答案,但长按/选项卡通常是弹出上下文菜单并进行额外操作(如删除)的地方。你可以在这里阅读如何做:How do you implement context menu in a ListActivity on Android?

        【讨论】:

          【解决方案5】:

          我要感谢 BoDhint 删除按钮的 focusable 状态,它拯救了我的一天。

          但是对于信息,由于 xml - 上的按钮不再是 focusable - state_focused,因此它的设计将不再向用户显示。

          尽管这些按钮仍将获得状态 pressed,但在单击父视图上的其他任何位置(任何位置但另一个按钮)时也是如此!

          请记住,对于您自己的情况,这可能不是一个好的解决方案,但它确实有效。

          【讨论】:

            【解决方案6】:

            我试过这个能够点击按钮,但它对我不起作用 安卓:可聚焦=“假” android:focusableInTouchMode="false"

            所以我所做的就是将活动布局更改为滚动视图,然后在其中添加一个 linerLayout。 之后,您可以在布局中添加按钮,并且每个按钮都可以点击。

            【讨论】:

              猜你喜欢
              • 2011-10-23
              • 1970-01-01
              • 1970-01-01
              • 2013-04-20
              • 2011-09-06
              • 1970-01-01
              • 2012-10-18
              • 1970-01-01
              相关资源
              最近更新 更多