android - recyclerview刷新問題
問題描述
創(chuàng)建了一個recyclerview用來設(shè)置個人信息。如下圖:
然后點擊之后,會提示,如下圖:
選擇完成之后,用戶選擇確定或者取消重選,如下圖:
在選擇確定后,就返回recyclerview了,那這個改如何更新?(圖片是xml文件里默認值,應(yīng)該怎樣更新成用戶選的?)
問題解答
回答1:已經(jīng)解決。一開始想找找不使用更換數(shù)據(jù)集數(shù)據(jù)的形式來刷新recyclerview。但是最后發(fā)現(xiàn)貌似沒有別的辦法了。所以新建了一個數(shù)據(jù)集的類(很普通的,數(shù)據(jù)內(nèi)容,set,get方法)。在調(diào)用recyclerview的activity里初始化數(shù)據(jù)。因為我是在調(diào)用了系統(tǒng)相機后返回的活動。所以在活動中新建了一個方法,用來讓上方圖中確定界面的活動調(diào)用。用來通知recyclerview的adapter這個item的數(shù)據(jù)更新了。在adapter中:
mData.get(1).setAvatarUri(photoFile); mData.get(1).setType(2); notifyItemChanged(1);
嗯,跟網(wǎng)上的一模一樣。(希望有其他方法的大佬能回答一下,給我個思路)
回答2:你想的太復(fù)雜了,使用recyclerview有點兒殺雞用牛刀了,還要多寫很多的代碼,直接使用TextView就可以了,點擊確定按鈕,直接設(shè)置圖片,多簡單啊。xml中:
<TextViewandroid:drawableRight='@drawable/avatar'android:drawablePadding='10dp'android:paddingLeft='10dp'android:paddingRight='10dp'android:textSize='16sp'android:text='頭像'android:background='@color/white'android:gravity='center_vertical'android:layout_width='match_parent'android:layout_height='50dp' />
在點擊確定按鈕后,使用:setCompoundDrawables(Drawable left, Drawable top, Drawable right, Drawable bottom)來設(shè)置新的頭像
回答3:有幾種方案可以參考,我司app做這種業(yè)務(wù)的也是這么一步一步過來的
使用startActivityForResult(),圖片選擇結(jié)束后同將uri和position傳給上一個activity,然后根據(jù)該position改變數(shù)據(jù)中的uri,刷新數(shù)據(jù)
使用廣播,自定義一個可以接收uri和position的廣播,在列表頁注冊,選擇完圖片后發(fā)送廣播,之后操作同上
使用事件總線,我們選用的是EventBus,列表頁注冊Event,選擇完圖片后發(fā)送對應(yīng)消息即可
我們最開始使用startActivityForResult和廣播主要為了不用引入第三方庫,同時兩個頁面互相不直接調(diào)用也減小了耦合,但隨著后期類似業(yè)務(wù)越來越多,比如詳情頁點擊收藏、添加評論,列表頁要刷新評論數(shù)和收藏數(shù)...使用這兩種方法會越來越多的冗余代碼,所以我們引入了EventBus,既減少了代碼量,又增加了代碼可讀性,減小了代碼耦合,而且這個庫還是挺小的,也容易上手,推薦題主直接使用這個庫
相關(guān)文章:
1. c++ - 如何正確的使用QWebEngineView?2. javascript - js 寫一個正則 提取文本中的數(shù)據(jù)3. WEB-INF / classes /與WEB-INF / lib / *。jar在類路徑優(yōu)先級?4. javascript - 關(guān)于Lazyload遇到的問題5. 算法 - python 給定一個正整數(shù)a和一個包含任意個正整數(shù)的 列表 b,求所有<=a 的加法組合6. ruby - gitlab托管,git clone 失敗?7. yii2中restful配置好后在nginx下報404錯誤8. angular.js - react的redux和vue的vuex,angular呢9. java - 我在用Struts2上傳文件時,報以下錯誤怎么回事?10. javascript - 游戲里物體角色層次渲染邏輯和代碼怎么寫才好?
