我有一個列表視圖與多個項目。 我希望用戶能夠投票或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