在我的應用程序中,我需要獲得一個完整的回收器視圖行(因爲我想獲得該行的某些視圖)。我搜索了我們可以通過方法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;
}