日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

Android开发——RecyclerView特性以及基本使用方法(二)

發(fā)布時(shí)間:2023/12/13 Android 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android开发——RecyclerView特性以及基本使用方法(二) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

0.? 前言

隨著Android的發(fā)展,雖然ListView依舊重要,但RecyclerView確實(shí)越來越多的被大家使用。但顯然并不能說RecyclerView就一定優(yōu)于ListView,而是應(yīng)該根據(jù)不同的需求選擇最合適的進(jìn)行使用。本篇將介紹我們?yōu)槭裁匆褂?/span>RecyclerView,并且它的基本使用方法。

Android開發(fā)——RecyclerView特性以及基本使用方法(一)中主要介紹了我們?yōu)槭裁匆褂肦ecyclerView以及RecyclerView強(qiáng)大的LayoutManager。這篇將主要介紹RecyclerView中的動(dòng)畫效果以及點(diǎn)擊事件的處理。本文原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處為SEU_Calvin的博客。


1.? RecyclerView的動(dòng)畫效果和點(diǎn)擊事件

系統(tǒng)沒有提供ClickListenerLongClickListener,不過我們也可以自己去添加,這里通過adapter中自己去提供回調(diào)的方式實(shí)現(xiàn)。

Adapter中如下所示:

public OnItemClickListener itemClickListener;public void setOnItemClickListener(OnItemClickListener itemClickListener) {this.itemClickListener = itemClickListener;}public interface OnItemClickListener {void onItemClick(View view, int position);void onItemLongClick(View view, int position);}public class ViewHolder extends RecyclerView.ViewHolder{public TextView textView;public ViewHolder(View itemView) {super(itemView);textView = (TextView)itemView.findViewById(R.id.id_num);textView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {if (itemClickListener != null) {itemClickListener.onItemClick(view, getPosition());}}});textView.setOnLongClickListener(new View.OnLongClickListener() {@Overridepublic boolean onLongClick(View view) {if (itemClickListener != null) {itemClickListener.onItemLongClick(view, getPosition());}return true;}});} }

首先自行提供了點(diǎn)擊和長(zhǎng)按的接口,并在內(nèi)部類ViewHolder中對(duì)點(diǎn)擊事件進(jìn)行了處理。

Activity中的實(shí)現(xiàn)如下:

mAdapter.setOnItemClickListener(new RecyclerAdapter.OnItemClickListener() {@Overridepublic void onItemClick(final View view, int position) {Toast.makeText(MainActivity.this, position + "", Toast.LENGTH_SHORT).show();}@Overridepublic void onItemLongClick(View view, int position) {mAdapter.removeData(position);}});

這里簡(jiǎn)單的單擊事件,只是Toast了位置信息,而在長(zhǎng)按事件中,則調(diào)用了Adapter中的removeData()方法,notifyItemRemoved()方法則對(duì)該條目進(jìn)行了刪除,而且是有動(dòng)畫效果的。若有添加數(shù)據(jù)的需求,也是有對(duì)應(yīng)的方法,即notifyItemInserted(position)

public void removeData(int position) {mData.remove(position);notifyItemRemoved(position);}public void addData(int position) {mData.add(position, "Insert One");notifyItemInserted(position);}

當(dāng)然,需要為RecyclerView進(jìn)行關(guān)于動(dòng)畫的設(shè)置:

mRcList.setItemAnimator(newDefaultItemAnimator());



這里需要注意的是,如Android開發(fā)——RecyclerView特性以及基本使用方法(一)中顯示的那樣,notifyDataSetChanged()是沒有動(dòng)畫效果的。從效果圖中可以看到,RecyclerView可以正常的響應(yīng)點(diǎn)擊事件,和長(zhǎng)按刪除事件,而且添加和刪除事件都是有動(dòng)畫效果的。

源碼下載地址點(diǎn)這里

轉(zhuǎn)載于:https://www.cnblogs.com/qitian1/p/6461452.html

總結(jié)

以上是生活随笔為你收集整理的Android开发——RecyclerView特性以及基本使用方法(二)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。