我想将RecyclerView
的可点击项设为可点击项。但是,它不起作用。 item_background.xml
定义良好,可以在我项目的其他部分使用。但是,在这种情况下,我在LinearLayout
中有更多项目,其中包含一些onClick
侦听器。当我单击item
时,背景没有改变。请参见下面的代码。
我不能为内部项目设置背景,因为我需要整个项目更改背景颜色,而不仅仅是部分。
item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:background="@drawable/item_background"
android:clickable="true"
...
>
<TextView
<!-- NO BACKGROUND -->
... />
<ImageView
<!-- NO BACKGROUND -->
... />
...
</LinearLayout>
item_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/darker_gray" android:state_pressed="true"/>
<item android:drawable="@android:color/darker_gray" android:state_focused="true"/>
<item android:drawable="@android:color/transparent"/>
</selector>
答案 0 :(得分:0)
要更改背景或突出显示recyclerview
中的选定项目,您可以尝试
public class AdapterClass extends RecyclerView.Adapter<AdapterClass.ViewHolder> {
private int selected_position = -1;
@Override
public void onBindViewHolder(PlacesLocationAdapter.ViewHolder holder, final int position) {
if (selected_position == position) {
// do your stuff here like
//Change selected item background
parentLayout.setBackgroundColor(Color.parse("darkgraycolorcode"));
} else {
// do your stuff here like
//Change unselected item background
parentLayout.setBackgroundColor(Color.TRANSPARENT);
}
// rest of the code here
holder.linelayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(selected_position==position){
selected_position=-1;
notifyDataSetChanged();
return;
}
selected_position = position;
notifyDataSetChanged();
}
});
//rest of the code here
}
}
您还可以定义父级布局的点击侦听器,即在视图持有器中也定义linearlayout