[1].本文接上文: RecyclerView基本使用[2].RecyclerView把很多事都交給了我們,就連item的點選事件都沒有
[3].在adapter中加載布局的時候,可以為item添加事件
[4].沒有點選效果,還要自己添加點選的選擇器
[5].RecyclerView增删條目以及條目運動效果
一、點選事件
方式1.修改:FirstRvAdapter#onCreateViewHolder
public FirstViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//加載布局檔案
View itemView = LayoutInflater.from(mCtx).inflate(R.layout.item_rv, null);
final FirstViewHolder holder = new FirstViewHolder(itemView);
//點選監聽
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ToastUtil.showAtOnce(mCtx, "Position:"+holder.getLayoutPosition());
}
});
return holder;
}
方式2:可以添加回調,将事件推到Activity中
1.FirstRvAdapter中監聽點選事件
public FirstViewHolder onCreateViewHolder(final ViewGroup parent, int viewType) {
//加載布局檔案
final View itemView = LayoutInflater.from(mCtx).inflate(R.layout.item_rv, null);
final FirstViewHolder holder = new FirstViewHolder(itemView);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mOnItemClickListener != null) {
mOnItemClickListener.onclick(itemView, parent, holder.getLayoutPosition());
}
}
});
return holder;
}
/////////////////////條目點選監聽/////////////////////////////////////
public interface OnItemClickListener {
void onclick(View itemView, ViewGroup parent, int position);
}
private OnItemClickListener mOnItemClickListener;
public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
mOnItemClickListener = onItemClickListener;
}
2.Activity中使用:
mAdapter.setOnItemClickListener(new FirstRvAdapter.OnItemClickListener() {
@Override
public void onclick(View itemView, ViewGroup parent, int position) {
ToastUtil.showAtOnce(DiverRVActivity.this, mData.get(position));
}
});
rv點選1.gif
二、背景選擇器
添加點選效果:可以自定義選擇器
為item的背景添加:安卓自帶波紋樣式的選擇器
//有邊界
android:background="?android:attr/selectableItemBackground"
//無邊界
android:background="?android:attr/selectableItemBackgroundBorderless"
rv點選2.gif
也可以自定義水波紋的樣式:
v21及以上有效果
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/gray"><!-- press和水波紋的顔色 -->
<item>
<!--item中可以自定義shape-->
<shape
android:innerRadius="5dp"
android:shape="rectangle">
<solid android:color="@color/white"/>
<corners android:radius="1dp"/>
</shape>
</item>
</ripple>
v21以下無效果
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/colorPrimaryDark" android:state_pressed="true"/>
<item android:drawable="@color/colorPrimary"/>
</selector>
三、添加與删除:效果是單機添加,長按删除
1.FirstRvAdapter中照樣子添加長按監聽:
/////////////////////條目長按監聽/////////////////////////////////////
public interface OnItemLongClickListener {
void onLongClick(View itemView, ViewGroup parent, int position);
}
private OnItemLongClickListener mOnItemLongClickListener;
public void setOnItemLongClickListener(OnItemLongClickListener onItemLongClickListener) {
mOnItemLongClickListener = onItemLongClickListener;
}
2.FirstRvAdapter添加删除與添加方法:
/**
* 添加item
*
* @param i 位置
* @param str 值
*/
public void addData(int i, String str) {
data.add(i, str);
notifyItemInserted(i);//重新整理資料
}
/**
* 删除item
*
* @param i 位置
*/
public void deleteData(int i) {
data.remove(i);
notifyItemRemoved(i);//重新整理資料
}
3.Activity中使用:
mAdapter.setOnItemClickListener(new FirstRvAdapter.OnItemClickListener() {
@Override
public void onclick(View itemView, ViewGroup parent, int position) {
mAdapter.addData(position, ZRandom.randomCnName());
mRecyclerView.scrollToPosition(0);//滑動到某個條目
}
});
mAdapter.setOnItemLongClickListener(new FirstRvAdapter.OnItemLongClickListener() {
@Override
public void onLongClick(View itemView, ViewGroup parent, int position) {
mAdapter.deleteData(position);
}
});
增加與删除.gif
後記、
1.聲明:
[1]本文由張風捷特烈原創,轉載請注明
[2]歡迎廣大程式設計愛好者共同交流
[3]個人能力有限,如有不正之處歡迎大家批評指證,必定虛心改正
[4]你的喜歡與支援将是我最大的動力
2.連接配接傳送門:
更多安卓技術歡迎通路:安卓技術棧 我的github位址:歡迎star 簡書首發,騰訊雲+社群同步更新 張風捷特烈個人網站,程式設計筆記請通路: http://www.toly1994.com3.聯系我
QQ:1981462002
郵箱:
[email protected] 微信:zdl1994328
4.歡迎關注我的微信公衆号,最新精彩文章,及時送達:
公衆号.jpg