如何从 RecyclerView 获取特定的视图复选框?
How to get specific view checkbox from RecyclerView?
我有一个 recyclerview,里面装满了相对布局,每个布局都有一个文本视图和一个复选框。在我的 recyclerview 过滤器片段中,我正在实施 android.widget.CompoundButton.OnCheckedChangeListener 以尝试区分点击了 recyclerview 项目的哪个文本视图,然后执行一个操作,这同样适用于取消检查阶段,如何实现?
谢谢
在 onCheckedChanged 中,您可以通过 checkbox.getParent() 从您的复选框中获取您的相对布局。
然后您可以将任何更改应用于您的视图。
如果你想要在adapter中的核心位置,你可以通过your_recyler_view.getChildAdapterPosition(get_relative_layout)
得到
希望这有帮助。
不能直接使用onclick。我找到了一个解决方案,它对我有用。尝试一下。
第 1 步:先将此 RecyclerItemClickListener class 添加到您的包中。
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
}
}
}));
我有一个 recyclerview,里面装满了相对布局,每个布局都有一个文本视图和一个复选框。在我的 recyclerview 过滤器片段中,我正在实施 android.widget.CompoundButton.OnCheckedChangeListener 以尝试区分点击了 recyclerview 项目的哪个文本视图,然后执行一个操作,这同样适用于取消检查阶段,如何实现?
谢谢
在 onCheckedChanged 中,您可以通过 checkbox.getParent() 从您的复选框中获取您的相对布局。
然后您可以将任何更改应用于您的视图。
如果你想要在adapter中的核心位置,你可以通过your_recyler_view.getChildAdapterPosition(get_relative_layout)
得到
希望这有帮助。
不能直接使用onclick。我找到了一个解决方案,它对我有用。尝试一下。
第 1 步:先将此 RecyclerItemClickListener class 添加到您的包中。
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
}
}
}));