我有一个充满了relativelayouts的recyclerview,每个都有一个textview和一个复选框。在我的recyclerview过滤器片段中,我正在实现android.widget.CompoundButton.OnCheckedChangeListener以尝试区分单击recyclelerview项目的textview,然后执行操作,这同样适用于取消检查阶段,如何实现?< / p>
由于
答案 0 :(得分:1)
在onCheckedChanged中,您可以通过checkbox.getParent()从复选框中获取您的relativelayout。
然后,您可以对视图应用任何更改
如果你想要适配器中的coresspone位置,你可以通过your_recyler_view.getChildAdapterPosition(get_relative_layout)来获取
希望这会有所帮助。
答案 1 :(得分:0)
您不能直接使用onclick。我找到了一个解决方案,它对我有用。试试吧。
步骤1:Fist将此RecyclerItemClickListener类添加到您的包中。
public class RecyclerItemClickListener implements
RecyclerView.OnItemTouchListener {
private OnItemClickListener mListener;
public interface OnItemClickListener {
public void onItemClick(View view, int position);
}
GestureDetector mGestureDetector;
public RecyclerItemClickListener(Context context,
OnItemClickListener listener) {
mListener = listener;
mGestureDetector = new GestureDetector(context,
new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onSingleTapUp(MotionEvent e) {
return true;
}
});
}
@Override
public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) {
View childView = view.findChildViewUnder(e.getX(), e.getY());
if (childView != null && mListener != null
&& mGestureDetector.onTouchEvent(e)) {
mListener.onItemClick(childView,
view.getChildPosition(childView));
}
return false;
}
@Override
public void onTouchEvent(RecyclerView view, MotionEvent motionEvent) {
}
}
第2步:现在使用onclick方法。这会给你点击项目的位置。一旦你获得了位置而不是现在在这个位置查看,你可以根据你的要求使用它。
recyclerview.addOnItemTouchListener(new RecyclerItemClickListener(
context, new RecyclerItemClickListener.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
// TODO Auto-generated method stub
//find your view at clicked position here.
CheckBox c = (CheckBox) view.findViewById(R.id.btn_tag);
if (c.isChecked()) {
//add your code
} else {
//add your code
}
}
}));