我有一个列表视图与多个项目。 我希望用户能够投票或downvote项目。修改一个按钮,当另一个被点击
当用户点击“upvote”按钮时,它会变成绿色,“downvote”按钮应该恢复正常(或保持不变)。
同样的原理适用于用户点击“downvote”按钮。
从现在开始,我已经试过这个代码
holder.buttonUpvote.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ImageButton buttonUpvote = (ImageButton) v.findViewById(R.id.buttonUpvote);
ImageButton buttonDownvote = (ImageButton) v.findViewById(R.id.buttonDownvote);
buttonUpvote.setBackgroundColor(v.getResources().getColor(R.color.upvoteColor));
buttonDownvote.setBackgroundColor(Color.TRANSPARENT);
Toast.makeText(v.getContext(), "voted UP", Toast.LENGTH_LONG);
}
});
holder.buttonDownvote.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ImageButton buttonUpvote = (ImageButton) v.findViewById(R.id.buttonUpvote);
ImageButton buttonDownvote = (ImageButton) v.findViewById(R.id.buttonDownvote);
buttonUpvote.setBackgroundColor(Color.TRANSPARENT);
buttonDownvote.setBackgroundColor(v.getResources().getColor(R.color.downvoteColor));
Toast.makeText(v.getContext(), "voted DOWN", Toast.LENGTH_LONG);
}
});
我得到一个漂亮的空指针(我活该),因为“V”是按钮本身... 我怎么没看到我可以走出这个...
布局只是在相对布局的2个按钮。
任何帮助,将不胜感激, 谢谢。
也许你应该刚刚初始化按钮出onClickListener的。那么你不需要父视图。 – creativecreatorormaybenot
@creativecreatorormaybenot是的,它也可以,因为按钮在每个监听器中都是一样的,所以它有避免重复调用的好处。它也允许我改变布局而不打扰父类。 – Fundhor