我需要为OnClickListener
设置CutomView
(按钮),RelyclerView
。问题是我可以点击View
,但不能点击CustomView
。有什么想法吗?
我以这种方式抓住了点击:
我的CustomAdapter:
...
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.rv, parent, false);
view.setOnClickListener(TestActivity.myOnClickListener);
return new MyViewHolder(view);
}
...
在MainActivity中:
...
private static class MyOnClickListener implements View.OnClickListener {
private final Context context;
private MyOnClickListener(Context context) {
this.context = context;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button_map_1: {
}
Toast.makeText(context, "Clicked", Toast.LENGTH_SHORT).show();
// And nothing happens
}
}
}
}
...
答案 0 :(得分:0)
根据您发布的任何代码,您似乎没有将onClickListener
设置为正确的视图。在您的代码中,
view.setOnClickListener(TestActivity.myOnClickListener);
您正在将onClickListener
设置为视图,而您想将其设置为自定义视图(按钮)。因此,假设在rv.xml
文件中,您的自定义视图(按钮)的ID定义为button_map_1
,那么您的代码应为
view.findViewById(R.id.button_map_1).setOnClickListener(TestActivity.myOnClickListener);
这会在按钮onClickListener
上设置button_map_1
。
答案 1 :(得分:0)
我建议您在适配器中创建一个侦听器来捕获您的视图点击次数。然后,活动可以使用setChildClickListener附加到适配器上。
像这样:
class MyAdapter
{
View.OnClickListener mOnClickListener;
public void setChildClickListener(View.OnClickListener l)
{
mOnClickListener = l;
}
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.rv, parent, false);
view.setOnClickListener(mClicks);
return new MyViewHolder(view);
}
View.OnClickListener mClicks = new View.OnClickListener()
{
@Override
public void onClick(View v) {
if (null != mOnClickListener) {
mOnClickListener.onClick(v);
}
}
};
}