1
我的RecycleView中有一个播放列表项。现在我需要当用户点击一个项目,一个图像显示在点击项目和隐藏所有其他项目。点击查看RecycleView的Viewholder项目里面的图片
RecycleView项目布局是
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginBottom="1dp"
android:background="#FFFFFF">
<TextView
android:id="@+id/itemName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/text_margin"
android:layout_alignParentLeft="true"
android:textAppearance="?attr/textAppearanceListItem"/>
<TextView
android:id="@+id/itemDetail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_margin="@dimen/text_margin"
android:textAppearance="?attr/textAppearanceListItem"/>
<pl.droidsonroids.gif.GifImageView
android:id="@+id/itemGif"
android:layout_width="60dp"
android:layout_height="30dp"
android:visibility="invisible"
android:src="@drawable/sound_bar"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:background="@android:color/white"
/>
</RelativeLayout>
这是我的代码。此代码正常工作与项目是可见的屏幕上。但是当项目在屏幕上不可见时,它会给出空点例外
viewHolder.itemGif.setVisibility(View.VISIBLE);
公共无效changeGif(INT nowPlay) {
MyItemRecyclerViewAdapter.ViewHolder viewHolder;
for (int i=0; i<recyclerView.getAdapter().getItemCount()-1;i++){
if(i==nowPlay){
viewHolder = (MyItemRecyclerViewAdapter.ViewHolder) recyclerView.findViewHolderForLayoutPosition(i);
viewHolder.itemGif.setVisibility(View.VISIBLE);
}else
{
viewHolder = (MyItemRecyclerViewAdapter.ViewHolder) recyclerView.findViewHolderForLayoutPosition(i);
viewHolder.itemGif.setVisibility(View.INVISIBLE);
}
}
}
PLZ见截图。
Click on Item 1 and show Image here
Click on Item 2 and show Image here
感谢@Divy快速响应...它解决了我的问题。但是onBindViewHolder这个代码给出了意想不到的结果....'if(holder.mItem.getItemDate()。equalsIgnoreCase(“ - ”)){ holder.itemDetail.setTextSize(TypedValue.COMPLEX_UNIT_SP,21); holder.itemDetail.setTextColor(Color.BLUE); holder.mView.setEnabled(false); }'**它也改变不符合条件的另一个位置的颜色和文本大小......为什么......? Plz帮助** –
不要从持有者那里获取任何数据,持有者仅用于视图,而不是'holder.mItem'使用'mItem.getPosition(position).getItemDate()。equalsIgnoreCase(“ - ”)'并重置您的更改('textSize'和'textColor')在其他情况下。 –