创建了一个recyclerview用来设置个人信息。如下图:
然后点击之后,会提示,如下图:
选择完成之后,用户选择确定或者取消重选,如下图:
在选择确定后,就返回recyclerview了,那这个改如何更新?(图片是xml文件里默认值,应该怎样更新成用户选的?)
已经解决。一开始想找找不使用更换数据集数据的形式来刷新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)来设置新的头像
setCompoundDrawables(Drawable left, Drawable top, Drawable right, Drawable bottom)
有几种方案可以参考,我司app做这种业务的也是这么一步一步过来的
使用startActivityForResult(),图片选择结束后同将uri和position传给上一个activity,然后根据该position改变数据中的uri,刷新数据
使用广播,自定义一个可以接收uri和position的广播,在列表页注册,选择完图片后发送广播,之后操作同上
使用事件总线,我们选用的是EventBus,列表页注册Event,选择完图片后发送对应消息即可
我们最开始使用startActivityForResult和广播主要为了不用引入第三方库,同时两个页面互相不直接调用也减小了耦合,但随着后期类似业务越来越多,比如详情页点击收藏、添加评论,列表页要刷新评论数和收藏数...使用这两种方法会越来越多的冗余代码,所以我们引入了EventBus,既减少了代码量,又增加了代码可读性,减小了代码耦合,而且这个库还是挺小的,也容易上手,推荐题主直接使用这个库
已经解决。一开始想找找不使用更换数据集数据的形式来刷新recyclerview。但是最后发现貌似没有别的办法了。
所以新建了一个数据集的类(很普通的,数据内容,set,get方法)。在调用recyclerview的activity里初始化数据。
因为我是在调用了系统相机后返回的活动。所以在活动中新建了一个方法,用来让上方图中确定界面的活动调用。用来通知recyclerview的adapter这个item的数据更新了。在adapter中:
嗯,跟网上的一模一样。(希望有其他方法的大佬能回答一下,给我个思路)
你想的太复杂了,使用recyclerview有点儿杀鸡用牛刀了,还要多写很多的代码,直接使用TextView就可以了,点击确定按钮,直接设置图片,多简单啊。
xml中:
在点击确定按钮后,使用:
setCompoundDrawables(Drawable left, Drawable top, Drawable right, Drawable bottom)
来设置新的头像有几种方案可以参考,我司app做这种业务的也是这么一步一步过来的
使用startActivityForResult(),图片选择结束后同将uri和position传给上一个activity,然后根据该position改变数据中的uri,刷新数据
使用广播,自定义一个可以接收uri和position的广播,在列表页注册,选择完图片后发送广播,之后操作同上
使用事件总线,我们选用的是EventBus,列表页注册Event,选择完图片后发送对应消息即可
我们最开始使用startActivityForResult和广播主要为了不用引入第三方库,同时两个页面互相不直接调用也减小了耦合,但随着后期类似业务越来越多,比如详情页点击收藏、添加评论,列表页要刷新评论数和收藏数...使用这两种方法会越来越多的冗余代码,所以我们引入了EventBus,既减少了代码量,又增加了代码可读性,减小了代码耦合,而且这个库还是挺小的,也容易上手,推荐题主直接使用这个库