单击项目时更改布局视图

时间:2017-06-08 07:09:18

标签: android xml

应用程序是在RecyclerView的帮助下进行设计的,其中包含进度条的线性布局我需要帮助来在单击项目时更改视图,并且当单击项目时,那个被单击的项目应该看起来与另一个项目相比,在相同的位置,并且在点击时假设我得到数字20然后进度条颜色应该更改为20%不同颜色并且剩余应该是不同颜色。

main.xml中

<android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="1dp"
        android:layout_marginTop="16dp"
        android:scrollbars="vertical" />

list.xml

<LinearLayout
    android:id="@+id/llDevice"
    android:layout_width="80dp"
    android:layout_height="80dp"
    android:orientation="vertical"
    android:gravity="center_horizontal|center_vertical"
    android:visibility="visible">

    <ProgressBar
        android:id="@+id/pbBatteryStatus"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="wrap_content"
        android:layout_height="10dp"
        android:layout_gravity="center"
        android:indeterminateOnly="false"
        android:max="100"
        android:progressDrawable="@drawable/border_progressbar"/>

</LinearLayout>

border_progressbar.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
    <shape>
        <corners android:radius="5dp" />
        <gradient
            android:centerColor="@color/ripple_grey"
            android:endColor="@color/ripple_grey"
            android:startColor="@color/ripple_grey" />
    </shape>
</item>


<item android:id="@android:id/progress">
    <clip>
        <shape>
            <corners android:radius="5dp" />
            <gradient
                android:endColor="@color/ripple_errorMsg"
                android:startColor="@color/ripple_color" />
        </shape>
    </clip>
</item>

请帮助我解决这些问题

1 个答案:

答案 0 :(得分:0)

您必须在模型中定义标记

boolean clicked = false;

然后当您在列表中点击某个项目时,您应该更改其点击状态

model.clicked = !model.clicked;

然后在onBindViewHolder中使用简单的if,否则您可以更改true点击状态的项目视图

    @Override
public void onBindViewHolder(ViewHolder holder, int position) {
      Model model = models.get(position);
      if(model.clicked){}
      else{}
}