Android ListView中的连锁反应行为

Android ListView中的连锁反应行为,android,android-listview,material-design,listviewitem,rippledrawable,Android,Android Listview,Material Design,Listviewitem,Rippledrawable,我使用元素为列表视图中的每个项目实现了连锁反应。当我触摸(选择)列表视图中的每个项目时,我得到了想要的连锁反应。但是当我滚动ListView并再次选择任何项目时,涟漪会很快消失(几乎看不到)。我不知道为什么涟漪在某些ListView项目上出现得很好,而在某些项目上则非常奇怪 我定制的ripple布局如下所示(ripple_background.xml) 有人在你的列表视图中遇到过这种奇怪的连锁反应吗?是否知道ListView的回收机制与此有关?谢谢。不要将连锁反应传递给列表中的每一项,请尝试以下

我使用
元素为
列表视图中的每个项目实现了连锁反应。当我触摸(选择)列表视图中的每个项目时,我得到了想要的连锁反应。但是当我滚动
ListView
并再次选择任何项目时,涟漪会很快消失(几乎看不到)。我不知道为什么涟漪在某些
ListView
项目上出现得很好,而在某些项目上则非常奇怪

我定制的ripple布局如下所示(ripple_background.xml)


有人在你的
列表视图中遇到过这种奇怪的连锁反应吗?是否知道ListView的回收机制与此有关?谢谢。

不要将连锁反应传递给列表中的每一项,请尝试以下方法:

<ListView
        android:id="@+id/yourListView"
        ...
        android:listSelector="@drawable/ripple_background" />


谢谢Saeed,这对我很有用。但是你知道如果我在listview中为每个项目使用ripple背景为什么不起作用吗?实际上ripple对每个项目都起作用,我不确定,但我认为你应该创建一个自定义适配器,在绑定视图时检查项目是否需要显示ripple(通过存储每个项目的状态)还有其他类似的处理方法。
<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="48dp"
    android:minHeight="?android:listPreferredItemHeight"
    android:orientation="horizontal"
    android:background="@drawable/ripple_background"> <!--My ripple layout-->

    <TextView
        android:id="@+id/someText
        android... />

    <ImageView
        android:id="@+id/someImage
        android... />

</RelativeLayout>
<ListView
        android:id="@+id/yourListView"
        ...
        android:listSelector="@drawable/ripple_background" />