在我的应用程序中,我需要获得一个完整的回收器视图行(因为我想获得该行的某些视图)。我搜索了我们可以通过方法getAdapterPosition()获取位置。方法我想获得该位置的完整行。我该如何实现它?如何在android中获取回收站视图的特定位置的行?
编辑:我对每一行都有一些看法,我在按钮上设置了onclick listner,我想要获得完整的行或顶部布局(父布局)。我明白的是,当点击被称为返回父查看哪个按钮被包装但未完成的行。
在我的应用程序中,我需要获得一个完整的回收器视图行(因为我想获得该行的某些视图)。我搜索了我们可以通过方法getAdapterPosition()获取位置。方法我想获得该位置的完整行。我该如何实现它?如何在android中获取回收站视图的特定位置的行?
编辑:我对每一行都有一些看法,我在按钮上设置了onclick listner,我想要获得完整的行或顶部布局(父布局)。我明白的是,当点击被称为返回父查看哪个按钮被包装但未完成的行。
我现在已经解决了这个问题。首先,在适配器类
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
mRecyclerView = recyclerView;
}
,并在下面的代码
RecyclerView.ViewHolder holder = mRecyclerView.findViewHolderForLayoutPosition(getAdapterPosition());
click事件使用通过以下方法得到适配器回收站视图,然后下面
MessageViewHolder messageViewHolder = (MessageViewHolder) holder;
提到投持有人的实际对象
恭喜!现在你有一个完整的特定位置。快乐编码
我用一个类获得视图(点击和点击龙太)
public class RecyclerTouchListener implements RecyclerView.OnItemTouchListener {
private GestureDetector gestureDetector;
private ClickListener clickListener;
public RecyclerTouchListener(Context context, final RecyclerView recyclerView, final ClickListener clickListener) {
this.clickListener = clickListener;
gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onSingleTapUp(MotionEvent e) {
return true;
}
@Override
public void onLongPress(MotionEvent e) {
View child = recyclerView.findChildViewUnder(e.getX(), e.getY());
if (child != null && clickListener != null) {
clickListener.onLongClick(child, recyclerView.getChildPosition(child));
}
}
});
}
@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
View child = rv.findChildViewUnder(e.getX(), e.getY());
if (child != null && clickListener != null && gestureDetector.onTouchEvent(e)) {
clickListener.onClick(child, rv.getChildPosition(child));
}
return false;
}
@Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {
}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}
public interface ClickListener {
void onClick(View view, int position);
void onLongClick(View view, int position);
}
}
,并使用该
/** * 鉴于回收站项目单击处理 */
rvDraft.addOnItemTouchListener(new RecyclerTouchListener(getActivity(),
rvDraft, new RecyclerTouchListener.ClickListener() {
@Override
public void onClick(View view, final int position) {
// click operation
}
@Override
public void onLongClick(View view, final int position) {
Dialogs dialog = new Dialogs();
dialog.showAlertForAction(getActivity(), getString(R.string.are_u_sure_want_to_delete), new AlertInterface() {
@Override
public void buttonYesClick() {
// long press operation
}
@Override
public void buttonNoClick() {
}
});
}
}));
希望这会对你有所帮助。
使用全局变量View selectedView
。在您的自定义ViewHolder
类,假设该行项目是一个集的LinearLayout使用添加下列行
rowItemLayout = (LinearLayout) itemView.findViewById(R.id.row_item);
rowItemLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectedView = rowItemLayout;
..
}
});
现在,您可以获取该视图
public View getSelectedView() {
return selectedView;
}