我有一个RecylerView,它包含一个textView作为单独的项目。根据要求,在查看当前图像后,将在点击时更改textView的背景图像。
简单来说:
onClick textView 电视 - >检查textview的背景图片电视 - >检查电视的背景图片是 a ,然后将其设为 b ,反之亦然
请在下面找到我的代码:
viewHolder.addRemove.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(viewHolder.clicked==0)
{
viewHolder.addRemove.setBackgroundResource(R.mipmap.added);
viewHolder.clicked=1;
groupSlcArray.add(model.getName().trim());
Log.d("groupArr", Arrays.toString(groupSlcArray.toArray()));
}
else
{
viewHolder.addRemove.setBackgroundResource(R.mipmap.addslcgroup);
viewHolder.clicked=0;
groupSlcArray.remove(model.getName().trim());
Log.d("groupArr", Arrays.toString(groupSlcArray.toArray()));
}
}
});
无论如何我无法找到textView的后台资源进行检查。需要你的帮助。这个问题对某些人来说似乎太简单了。因此,请在Outvoting之前尝试提供解决方案,因为我已经尝试了所有可能的解决方案。谢谢提前
答案 0 :(得分:0)
请尝试以下代码:
holder.textview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (holder.textview.getBackground() == getResources().getDrawable(R.drawable.a)){
holder.textview.setBackground(R.drawable.b);
}
else{
holder.textview.setBackground(R.drawable.a);
}
}
});
答案 1 :(得分:0)
你必须了解getView。 有时如果您在ListView中滚动,这不是一个精确的颜色
所以我想建议以下方式:
if (groupSlcArray.contain(odel.getName().trim())) {
viewHolder.addRemove.setBackgroundResource(R.mipmap.addslcgroup);
} else {
viewHolder.addRemove.setBackgroundResource(R.mipmap.added);
}
viewHolder.addRemove.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick (View v){
if (groupSlcArray.contain(odel.getName().trim())) {
viewHolder.addRemove.setBackgroundResource(R.mipmap.addslcgroup);
groupSlcArray.remove(model.getName().trim());
Log.d("groupArr", Arrays.toString(groupSlcArray.toArray()));
} else {
viewHolder.addRemove.setBackgroundResource(R.mipmap.added);
groupSlcArray.add(model.getName().trim());
Log.d("groupArr", Arrays.toString(groupSlcArray.toArray()));
}
}
});