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>
效果圖如下:
相關文章
- 移動端VUE點選、滑動和長按等事件處理(自定義指令)Vue事件
- RecyclerView 梳理:點選&長按事件、分割線、拖曳排序、滑動刪除View事件排序
- mui 點選長按複製文字UI
- ASPxGridView中Command列自定義按鈕點選事件概要View事件
- VBA 控制元件學習筆記(按鈕點選事件)控制元件筆記事件
- QT經驗(一)——按鈕長按事件分析QT事件
- javascript對點選事件和拖動事件的區分JavaScript事件
- vue中在父元件點選按鈕觸發子元件的事件Vue元件事件
- Layui Confirm彈出框連續點選按鈕會觸發多次事件UI事件
- databinding的點選事件事件
- 點選事件的委派事件
- iOS全埋點解決方案-UITableView和UICollectionView點選事件iOSUIView事件
- iOS實現點選圖片放大&長按儲存圖片iOS
- JavaScript 點選按鈕返回底部JavaScript
- Android 點選按鈕跳轉Android
- RecyclerView使用指南(三)—— 新增分割線和點選事件View事件
- 移動端h5模擬長按事件H5事件
- 防止頁面按鈕多次點選
- tabbar凸起點選事件處理tabBar事件
- echarts 工具條點選事件控制Echarts事件
- MxDraw雲圖點選事件教程事件
- RecyclerView-->通用的AdapterViewAPT
- 3D地圖的定時高亮和點選事件3D地圖事件
- Blazor入門100天 : 自做一個支援長按事件的按鈕元件Blazor事件元件
- Android處理按鈕重複點選Android
- jQuery點選按鈕刪除div元素jQuery
- JavaScript點選按鈕彈出層效果JavaScript
- JavaScript點選按鈕返回底部詳解JavaScript
- Android | 使用 AspectJ 限制按鈕快速點選Android
- FairyGui--實現點選按鈕使UI欄開啟和收起AIGUI
- 微信小程式單擊事件與長按事件衝突的解決辦法微信小程式事件
- uniapp點選按鈕提交textarea值為undifineAPP
- 中國地圖繪製-點選事件地圖事件
- IOS setOnclick - 點選事件完美擴充套件iOS事件套件
- WebView 自定義長按選擇,實現收藏 / 分享選中文字。WebView
- 單選按鈕和核取方塊
- 異形按鈕的點選區域處理
- Tap事件和Tap點透原理事件