【发布时间】:2019-11-21 20:21:31
【问题描述】:
我尝试在我点击的回收站视图上为按钮着色。
public class OneActiveButtonAdapter
extends RecyclerView.Adapter<OneActiveButtonAdapter.ViewHolder> {
public class ViewHolder extends RecyclerView.ViewHolder
implements View.OnClickListener {
private Button button;
private WeakReference<ClickListener> listenerWR;
ViewHolder(View view, ClickListener listener) {
super(view);
button = view.findViewById(R.id.button);
button.setBackgroundColor(Color.WHITE);
listenerWR = new WeakReference<>(listener);
}
@Override
public void onClick(View view) {
Log.d("PRESSED", "BUTTON IS PRESSED");
}
}
public interface ClickListener {
void onPositionClicked(int position);
}
private ClickListener clickListener;
private List<Payable> buttons;
private int indexOfActivatedButton = -1;
public OneActiveButtonAdapter(List<Payable> buttons, ClickListener clickListener) {
this.buttons = buttons;
this.clickListener = clickListener;
}
@Override
public int getItemCount() {
return buttons.size();
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int ind) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.buttons_linear_layout,
parent, false);
return new ViewHolder(view, clickListener);
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, int ind) {
viewHolder.button.setText(buttons.get(ind).getTitle());
if (indexOfActivatedButton == ind) {
viewHolder.button.setBackgroundColor(Color.GREEN);
} else {
viewHolder.button.setBackgroundColor(Color.WHITE);
}
}
}
'''
还有代码,当我为 '''RecyclerView''' 创建适配器时:
'''
OneActiveButtonAdapter foodRVAdapter = new OneActiveButtonAdapter(food,
new OneActiveButtonAdapter.ClickListener() {
@Override
public void onPositionClicked(int position) {
Log.d("POSITION", String.valueOf(position));
}
});
'''
当我尝试单击 RecyclerView 上的某个按钮时,我希望看到日志,但它没有输出。我也尝试 setOnClickListener 按钮,但它并没有改变什么。 能有什么麻烦?
【问题讨论】:
-
您似乎还没有在
onClick()中呼叫您的听众 -
@user3170251,这如何影响日志不输出的事实?我认为,没有必要。
-
澄清一下,您在 logcat 中没有看到
Log.d("PRESSED", "BUTTON IS PRESSED");? -
@user3170251,是的。
-
尝试在
ViewHolder构造函数中调用view.setOnClickListener(this)
标签: android android-recyclerview onclick listener