RecyclerView-->點選和長按事件
RecyclerView不像ListView提供了點選和長按的監聽事件,我們需要自己在Adaper中定義,如下所示:
public class TestAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
private OnItemClickListener mItemClickListener;
private OnLongClickListener mLongClickListener;
public void setItemClickListener(OnItemClickListener itemClickListener) {
mItemClickListener = itemClickListener;
}
public void setLongClickListener(OnLongClickListener longClickListener) {
mLongClickListener = longClickListener;
}
public interface OnItemClickListener{
void onItemClick(int position);
}
public interface OnLongClickListener{
boolean onLongClick(int position);
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
return null;
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, final int i) {
//設定點選和長按事件
if (mItemClickListener != null){
viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mItemClickListener.onItemClick(i);
}
});
}
if (mLongClickListener != null){
viewHolder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
return mLongClickListener.onLongClick(i);
}
});
}
}
@Override
public int getItemCount() {
return 0;
}
}
RecyclerView的條目也沒有點選效果,我們可以通過以下方式實現;
在drawable和drawable-v21目錄下定義下面selector_recycler_item.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/color_click" android:state_pressed="true"/>
<item android:drawable="@color/color_click" android:state_focused="true"/>
<item android:drawable="@color/color_white"/>
</selector>
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/color_click">
<item android:drawable="@color/color_white"/>
</ripple>
在條目中使用:
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:gravity="center"
android:id="@+id/tv_text"
android:background="@drawable/selector_recycler_item"
android:textSize="18sp"
android:layout_height="50dp">
</TextView>
效果圖如下:
相關文章
- Android觸控事件(續)——點選長按事件Android事件
- [Unity UGUI]點選和長按UnityUGUI
- 移動端VUE點選、滑動和長按等事件處理(自定義指令)Vue事件
- Android--按鈕點選事件Android事件
- RecyclerView 梳理:點選&長按事件、分割線、拖曳排序、滑動刪除View事件排序
- mui 點選長按複製文字UI
- js實現的按鈕不用人為點選就觸發點選事件JS事件
- asp.net點選鍵盤enter鍵,呼叫按鈕點選事件函式ASP.NET事件函式
- OnLongClickListener與OnLongPress長按事件GC事件
- QT經驗(一)——按鈕長按事件分析QT事件
- VBA 控制元件學習筆記(按鈕點選事件)控制元件筆記事件
- js為按鈕註冊點選事件處理函式JS事件函式
- js實現的按鈕響應點選回車事件JS事件
- ASPxGridView中Command列自定義按鈕點選事件概要View事件
- 專案分享八:基於按鈕點選事件的彈窗事件
- javascript對點選事件和拖動事件的區分JavaScript事件
- QHeaderView的點選和雙擊事件HeaderView事件
- vue中在父元件點選按鈕觸發子元件的事件Vue元件事件
- iOS實現點選圖片放大&長按儲存圖片iOS
- 一個BUTTON,實現點選播放錄音,長按錄音
- jquery點選按鈕顯示和隱藏DIvjQuery
- 為自定義的View新增長按事件View事件
- 點選回車實現按鈕點選功能
- Swift UITableView巢狀UICollectionView點選事件衝突(點選事件穿透)SwiftUIView巢狀事件穿透
- 點選事件的委派事件
- 禁止滑鼠點選事件事件
- Android實現點選兩次返回鍵和長按返回鍵退出應用實踐Android
- iOS全埋點解決方案-UITableView和UICollectionView點選事件iOSUIView事件
- 點選按鈕動畫方式隱藏和顯示div動畫
- 移動端指紋識別(長按事件)事件
- 移動端頁面功能之——長按事件事件
- JavaScript 點選按鈕返回底部JavaScript
- Layui Confirm彈出框連續點選按鈕會觸發多次事件UI事件
- databinding的點選事件事件
- RecyclerView中item點選事件View事件
- css禁用滑鼠點選事件CSS事件
- 點選按鈕實現div的顯示和隱藏
- JavaScript點選一個按鈕隱藏和顯示divJavaScript