【发布时间】:2017-03-06 06:52:02
【问题描述】:
这就是我想要做的:我希望在单击一次时突出显示 recyclerview 中的项目,并在再次单击时恢复正常。
所以我有一个recyclerview。当然我也有adapter。内部适配器是我的viewholder 类,我在itemview 上设置了onClickListener。
每当点击它时,我都会getTag()。如果它的值为"false",我突出显示itemview和setTag("true"),如果它的值为"true",我将itemview颜色恢复正常和setTag("false")。
到目前为止一切正常,但现在问题来了: 当我向上滚动(使该项目看不见)并再次向下滚动时,标签的值似乎也消失了,也突出显示了项目。
我试过setIsRecycable(false),但没有用。
如何在这些项目上保留标签/突出显示??
编辑: 公共类 ViewHolder 扩展 RecyclerView.ViewHolder 实现 View.OnClickListener,View.OnLongClickListener {
final RelativeLayout rl = (RelativeLayout)itemView.findViewById(R.id.rl1);
final RelativeLayout rl2 = (RelativeLayout)itemView.findViewById(R.id.rl2);
public ViewHolder(final View itemView) {
super(itemView);
itemView.setTag("f");
//text layout
mSenderUsernameView = (TextView) itemView.findViewById(R.id.tv_username);
mSenderMessageView = (TextView) itemView.findViewById(R.id.et_message);
mSenderTimeView = (TextView) itemView.findViewById(R.id.tv_time);
mSenderUsernameView.setOnClickListener(this);
mSenderMessageView.setOnClickListener(this);
mSenderTimeView.setOnClickListener(this);
rl.setOnClickListener(this);
rl2.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v.getId() == rl.getId() || v.getId() == rl2.getId() || v.getId() == mSenderUsernameView.getId() ||
v.getId() == mSenderMessageView.getId() || v.getId() == mSenderTimeView.getId()) {
//check if msg is selected or not
//not selected
if(itemView.getTag().toString().equals("f")){ rl.setBackgroundResource(R.drawable.selected_msg_color_roundings);
rl2.setBackgroundResource(R.drawable.selected_msg_color_roundings);
itemView.setTag("t");
}
//selected
else if(itemView.getTag().toString().equals("t")){
//Toast.makeText(context, mMessages.get(getAdapterPosition()).getUsername()
//+ " at " + mPos + " is " + va, Toast.LENGTH_LONG).show();
rl.setBackgroundResource(R.drawable.msg_color_roundings);
rl2.setBackgroundResource(R.drawable.msg_color_roundings);
itemView.setTag("f");
}
}
【问题讨论】:
-
请发布您的适配器的代码,否则我们将无法提供帮助
-
我发布了我的代码
标签: android android-recyclerview android-viewholder