建立了一個recyclerview用來設定個人資訊。如下圖:
然後點選之後,會提示,如下圖:
選擇完成之後,使用者選擇確定或取消重選,如下圖:
#在選擇確定後,就回到recyclerview了,那這個改如何更新? (圖片是xml檔案裡預設值,應該怎麼更新成使用者選的?)
漂亮男人2017-05-24 11:40:08
已經解決。一開始想找找不使用更換資料集資料的形式來刷新recyclerview。但是最後發現似乎沒有別的辦法了。
所以新建了一個資料集的類別(很普通的,資料內容,set,get方法)。在呼叫recyclerview的activity裡初始化資料。
因為我是在呼叫了系統相機後回傳的活動。所以在活動中新建了一個方法,用來讓上方圖確定介面的活動呼叫。用來通知recyclerview的adapter這個item的資料更新了。在adapter中:
mData.get(1).setAvatarUri(photoFile);
mData.get(1).setType(2);
notifyItemChanged(1);
嗯,跟網路上的一模一樣。 (希望有其他方法的大佬能回答一下,給我個想法)
巴扎黑2017-05-24 11:40:08
你想的太複雜了,使用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)
來設定新的頭像
習慣沉默2017-05-24 11:40:08
有幾個方案可以參考,我司app做這種業務的也是這麼一步一步過來的
使用startActivityForResult(),圖片選擇結束後同將uri和position傳給上一個activity,然後根據該position改變資料中的uri,刷新資料
使用廣播,自訂一個可以接收uri和position的廣播,在列表頁註冊,選擇完圖片後發送廣播,之後操作同上
使用事件匯流排,我們選用的是EventBus,清單頁註冊Event,選擇完圖片後發送對應訊息即可
我們最開始使用startActivityForResult和廣播主要為了不用引入第三方庫,同時兩個頁面互相不直接調用也減小了耦合,但隨著後期類似業務越來越多,比如詳情頁點擊收藏、添加評論,清單頁要刷新評論數和收藏數...使用這兩種方法會越來越多的冗餘代碼,所以我們引入了EventBus,既減少了代碼量,又增加了代碼可讀性,減小了程式碼耦合,而且這個函式庫還蠻小的,也容易上手,推薦題主直接使用這個函式庫