android - recyclerview刷新問題
仅有的幸福
仅有的幸福 2017-05-24 11:38:08
0
3
949

建立了一個recyclerview用來設定個人資訊。如下圖:

然後點選之後,會提示,如下圖:

選擇完成之後,使用者選擇確定或取消重選,如下圖:

#在選擇確定後,就回到recyclerview了,那這個改如何更新? (圖片是xml檔案裡預設值,應該怎麼更新成使用者選的?)

仅有的幸福
仅有的幸福

全部回覆(3)
漂亮男人

已經解決。一開始想找找不使用更換資料集資料的形式來刷新recyclerview。但是最後發現似乎沒有別的辦法了。
所以新建了一個資料集的類別(很普通的,資料內容,set,get方法)。在呼叫recyclerview的activity裡初始化資料。
因為我是在呼叫了系統相機後回傳的活動。所以在活動中新建了一個方法,用來讓上方圖確定介面的活動呼叫。用來通知recyclerview的adapter這個item的資料更新了。在adapter中:

 mData.get(1).setAvatarUri(photoFile);
            mData.get(1).setType(2);
            notifyItemChanged(1);
            

嗯,跟網路上的一模一樣。 (希望有其他方法的大佬能回答一下,給我個想法)

巴扎黑

你想的太複雜了,使用recyclerview有點兒殺雞用牛刀了,還要多寫很多的代碼,直接使用TextView就可以了,點擊確定按鈕,直接設置圖片,多簡單啊。
xml中:

<TextView
        android: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)來設定新的頭像

習慣沉默

有幾個方案可以參考,我司app做這種業務的也是這麼一步一步過來的

  • 使用startActivityForResult(),圖片選擇結束後同將uri和position傳給上一個activity,然後根據該position改變資料中的uri,刷新資料

  • 使用廣播,自訂一個可以接收uri和position的廣播,在列表頁註冊,選擇完圖片後發送廣播,之後操作同上

  • 使用事件匯流排,我們選用的是EventBus,清單頁註冊Event,選擇完圖片後發送對應訊息即可

我們最開始使用startActivityForResult和廣播主要為了不用引入第三方庫,同時兩個頁面互相不直接調用也減小了耦合,但隨著後期類似業務越來越多,比如詳情頁點擊收藏、添加評論,清單頁要刷新評論數和收藏數...使用這兩種方法會越來越多的冗餘代碼,所以我們引入了EventBus,既減少了代碼量,又增加了代碼可讀性,減小了程式碼耦合,而且這個函式庫還蠻小的,也容易上手,推薦題主直接使用這個函式庫

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板