Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 单击项目时更改布局视图_Android_Xml - Fatal编程技术网

Android 单击项目时更改布局视图

Android 单击项目时更改布局视图,android,xml,Android,Xml,该应用程序是在RecyclerView的帮助下设计的,其中包含进度条的线性布局 我想在单击项目时更改视图,并且在单击项目时,与其他项目相比,被单击的项目在相同的位置上看起来应该更大。点击后,假设我得到了数字20,那么进度条的颜色应该改变到20%不同的颜色,剩下的应该是不同的颜色 Main.xml <android.support.v7.widget.RecyclerView android:id="@+id/recycler_view"

该应用程序是在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>

</layer-list>


如何解决此问题?

您必须在模型中定义一个标志

boolean clicked = false;
然后,当在列表中单击某个项目时,您应该更改其单击状态

model.clicked = !model.clicked;
    @Override
public void onBindViewHolder(ViewHolder holder, int position) {
      Model model = models.get(position);
      if(model.clicked){}
      else{}
}
然后在
onBindViewHolder
中,使用简单的if和else,您可以使用
true
单击状态更改项目的视图

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