@@ -40,7 +40,7 @@ class PhotoGroupView : RecyclerView {
4040 exists : List <String >? = null,
4141 readOnly : Boolean ,
4242 appendText : String = "",
43- changed : (PhotoGroupAdapter ) -> Unit = {}) {
43+ changed : (PhotoGroupAdapter , Int ) -> Unit = { _, _ -> }) {
4444 val manager = object : GridLayoutManager (context, special.column) {
4545 override fun isAutoMeasureEnabled (): Boolean = true
4646 }
@@ -49,8 +49,8 @@ class PhotoGroupView : RecyclerView {
4949 pAdapter.setReadOnly(readOnly)
5050 pAdapter.setChangeBlock(changed)
5151 pAdapter.setAppendText(appendText)
52- if (! pAdapter.update(exists, special.limit)) {
53- changed(pAdapter)
52+ if (! pAdapter.update(exists, special.limit, index = - 1 )) {
53+ changed(pAdapter, - 1 )
5454 }
5555 this .adapter = pAdapter
5656 // 配置Adapter
@@ -86,9 +86,12 @@ class PhotoGroupView : RecyclerView {
8686 }
8787
8888 // 跳转至选择图片
89- private fun showPickPhoto (activity : Activity , key : String ,
90- selects : List <String >, limit : Int ,
91- adapter : PhotoGroupAdapter , index : Int ,
89+ private fun showPickPhoto (activity : Activity ,
90+ key : String ,
91+ selects : List <String >,
92+ limit : Int ,
93+ adapter : PhotoGroupAdapter ,
94+ index : Int ,
9295 crop : CropParams ? ) {
9396 val action: Int = when (key) {
9497 choiceList[0 ] -> {
@@ -100,32 +103,34 @@ class PhotoGroupView : RecyclerView {
100103 else -> - 1
101104 }
102105 if (action < 0 ) return
106+ val block: (Int , List <Uri >) -> Unit = { code, list ->
107+ if (code == PickControl .ACTION_CAMERA ) {
108+ if (adapter.isAppend) {
109+ val allOf: MutableList <String > = ArrayList (adapter.selectCount() + 1 )
110+ allOf.addAll(adapter.selectPaths())
111+ allOf.addAll(list.map(Uri ::toString))
112+ adapter.update(allOf, limit, index)
113+ } else {
114+ adapter.update(list.map(Uri ::toString), limit, index)
115+ }
116+ } else {
117+ if (adapter.isAppend) {
118+ val remotes: List <String > = selects.filter { null == PickUtils .path2Uri(it) }
119+ val allOf: MutableList <String > = ArrayList (limit)
120+ allOf.addAll(remotes)
121+ allOf.addAll(list.map(Uri ::toString))
122+ adapter.update(allOf, limit, index)
123+ } else {
124+ adapter.update(list.map(Uri ::toString), limit, index)
125+ }
126+ }
127+ }
103128 PickControl .obtain(clean = true ).action(action)
104129 .selects(selects)
105130 .limit(limit)
106131 .crop(crop)
107- .callback { code, list ->
108- if (code == PickControl .ACTION_CAMERA ) {
109- if (adapter.isAppend) {
110- val allOf: MutableList <String > = ArrayList (adapter.selectCount() + 1 )
111- allOf.addAll(adapter.selectPaths())
112- allOf.addAll(list.map(Uri ::toString))
113- adapter.update(allOf, limit, index)
114- } else {
115- adapter.update(list.map(Uri ::toString), limit, index)
116- }
117- } else {
118- if (adapter.isAppend) {
119- val remotes: List <String > = selects.filter { null == PickUtils .path2Uri(it) }
120- val allOf: MutableList <String > = ArrayList (limit)
121- allOf.addAll(remotes)
122- allOf.addAll(list.map(Uri ::toString))
123- adapter.update(allOf, limit, index)
124- } else {
125- adapter.update(list.map(Uri ::toString), limit, index)
126- }
127- }
128- }.done(activity)
132+ .callback(block)
133+ .done(activity)
129134 }
130135
131136 // 指定参数
0 commit comments