【问题标题】:ListView item Click/Tap programmatically [duplicate]ListView项目以编程方式单击/点击[重复]
【发布时间】:2013-04-29 20:14:10
【问题描述】:

我的 ListView 项目有一个自定义选择器。这是它的样子:

<item android:drawable="@color/transparent" android:state_activated="false"/>
<item android:drawable="@color/blue" android:state_activated="true"/>

当我点击一个项目时,它的背景变成蓝色。我想通过代码执行此“点击”,但即使我已经知道孩子在 ListView 中的位置,我也不知道要调用什么方法。


实际上,我真正想要的是在不触发 onListItemClick() 的情况下更改一行的背景(类似于点击它时)。

【问题讨论】:

    标签: android android-listview


    【解决方案1】:

    我想通过代码来“敲击”

    获取你想要的行(它必须在屏幕上)并调用performClick()或者你可以使用setActivated(true)(我从未尝试过这种方法。)

    【讨论】:

    • 但是 performclick() 不将行位置作为参数。我试过 performItemClick() 但我只是调用我的 onListItemClickListener 而不改变背景。我也试过 setActivated(true) 但仍然没有效果。
    • 试试listView.setItemChecked(position, true);
    【解决方案2】:

    如果您尝试模拟触摸事件会怎样?也许不是最干净的答案,但是...

    获取所需行的视图然后调用

    rowView.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, 0, 0, 0));
    

    【讨论】:

      【解决方案3】:

      将您的选择器更改为打开android:state_selected="true",然后使用listView.setSelection(index);

      【讨论】:

      • 如何将选择器更改为切换?
      • &lt;item android:drawable="@color/blue" android:state_selected="true"/&gt; &lt;item android:drawable="@color/transparent"/&gt;
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-09
      相关资源
      最近更新 更多