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')在其他情況下。 –