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