[英]RecyclerView item selected and how to disable Touch events
關於如何執行簡單的RecyclerView
click事件處理程序,有各種各樣的材料,但是我找不到所需的基本功能的幫助。 我希望能夠long tap
按一個項目,使其變為選中狀態(請參閱如何更改高程和顏色以使其顯示為選中狀態)。 然后,例如,如果在“ Fragment
我想基於單擊的“ Toolbar
刪除按鈕從RecyclerView
刪除一項,那么如果Google建議我們不保留適配器的位置實例,該怎么辦?在課外。
我從23.2.0支持庫中實現了一個BottomSheet
,它出現在我的RecyclerView
上方,但是單擊仍在進行,就像我在控制RecyclerView本身一樣,但我的頂部還有一個BottomSheet
。 我如何才能真正“禁用”它?
我試過了 :使用一個接口 ,將clickable=true
設置為頂部布局視圖。
我的RecyclerAdapter
:
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.EventViewHolder> {
private List<Event> eventsList;
private int selected_position = -1;
private RecyclerView recyclerView;
Typeface font;
Typeface fontBold;
public RecyclerAdapter(List<Event> eventsList, RecyclerView recyclerView) {
this.eventsList = eventsList;
this.recyclerView = recyclerView;
}
@Override
public RecyclerAdapter.EventViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.
from(parent.getContext()).
inflate(R.layout.events_cardview, parent, false);
font = Typeface.createFromAsset(itemView.getContext().getAssets(), "ubuntu-l.ttf");
fontBold = Typeface.createFromAsset(itemView.getContext().getAssets(), "ubuntu-b.ttf");
return new EventViewHolder(itemView);
}
@Override
public void onBindViewHolder(RecyclerAdapter.EventViewHolder eventViewHolder,final int position) {
if(selected_position == position){
// Here I am just highlighting the background
eventViewHolder.cardView.setCardBackgroundColor(ContextCompat.getColor(MyApplication.getAppContext(), R.color.tealfifty));
if (Build.VERSION.SDK_INT >= 21) {
eventViewHolder.itemView.setElevation(10f);
eventViewHolder.itemView.setTranslationZ(10f);
}
}else{
if (Build.VERSION.SDK_INT >= 21) {
eventViewHolder.itemView.setElevation(2f);
eventViewHolder.itemView.setTranslationZ(2f);
}
eventViewHolder.cardView.setCardBackgroundColor(ContextCompat.getColor(MyApplication.getAppContext(), R.color.white));
}
eventViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RecyclerView.LayoutManager lm = recyclerView.getLayoutManager();
// Updating old as well as new positions
notifyItemChanged(selected_position);
selected_position = position;
notifyItemChanged(selected_position);
lm.scrollToPosition(selected_position);
}
});
Event event = eventsList.get(position);
eventViewHolder.itemView.setTag(R.integer.EVENT_OBJECT_TAG, event);
....
嘗試這個。
mRecyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
return true;
}
@Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {
}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}
});
我在onInterceptTouchEvent
返回true,但在觸摸項目回收器視圖之后無效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.