为什么不帮我任何人???
在我的应用程序中我想使用
RxBus
用于处理事件和
设计模式!我想当点击其中一个
recyclerview
项,调用中的一个方法
fragment
.
为了这个我用了
!
RxBus代码:
object RxBus {
private val publisher = PublishSubject.create()
fun publish(event: Any) {
publisher.onNext(event)
}
fun listen(eventType: Class): Observable = publisher.ofType(eventType)
}
适配器代码:
class DashboardAvatarsAdapter constructor(
private val context: Context, private val model: List,
private val url: String
) :
RecyclerView.Adapter() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val inflater = LayoutInflater.from(parent.context)
return ViewHolder(inflater.inflate(R.layout.row_dashboard_avatars, parent, false))
}
override fun getItemCount() = model.size
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.avatarImg.showImageGlide(context, "$BASE_URL_IMAGE$url${model[position]}", holder.avatarLoader)
holder.avatarImg.setOnClickListener {
RxBus.publish(EventUpdateAvatar.UpdateAvatar(EVENTS_UPDATE_SEND_AVATAR, model[position]))
Log.e("uploadAvatarLog", "Adapter")
}
}
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val avatarImg: ImageView = itemView.findViewById(R.id.avatarItemList_img)
val avatarLoader: ProgressBar = itemView.findViewById(R.id.avatarItemList_progress)
}
}
碎片代码:
class DashboardAvatarsFragment : RoundedBottomSheetDialogFragment(), DashboardAvatarsContracts.View {
@NonNull
private lateinit var presenter: DashboardAvatarsPresenterImpl
private lateinit var token: String
private lateinit var layoutManager: GridLayoutManager
private lateinit var adapter: DashboardAvatarsAdapter
@NonNull
private var disposable: Disposable? = null
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_dashboard_avatars, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
//Initialize
presenter = DashboardAvatarsPresenterImpl(requireContext(), this)
layoutManager = GridLayoutManager(requireContext(), 5)
//Get token
token = GoodPrefs.getInstance().getString(PrefsKey.USER_JWT_TOKEN.name, "")
//Send avatar
disposable = RxBus.listen(EventUpdateAvatar.UpdateAvatar::class.java).subscribe {
if (it.updateType == EVENTS_UPDATE_SEND_AVATAR) {
Log.e("uploadAvatarLog", "Event")
presenter.sendAvatarId(token, it.avatarId)
}
}
//Get avatars list
presenter.loadData(token)
}
override fun showAvatars(res: DashboardAvatarsResponse.Res) {
adapter = DashboardAvatarsAdapter(requireContext(), res.avatars, res.baseUrl)
dashboardAvatars_recyclerView.initRecyclerView(layoutManager, adapter)
}
override fun updateAvatar() {
RxBus.publish(EventUpdateAvatar.UpdateAvatar(EVENTS_UPDATE_AVATAR, ""))
Log.e("uploadAvatarLog", "Receive")
}
}
我用过
Log.e
复制
一些
!
2019-05-07 12:15:35.901 10259-10259/com.app.android E/uploadAvatarLog: Event
2019-05-07 12:15:35.902 10259-10259/com.app.android E/uploadAvatarLog: Adapter
2019-05-07 12:15:35.978 10259-10259/com.app.android E/uploadAvatarLog: Send
2019-05-07 12:15:35.978 10259-10259/com.app.android E/uploadAvatarLog: Event
2019-05-07 12:15:35.978 10259-10259/com.app.android E/uploadAvatarLog: Receive
2019-05-07 12:15:36.008 10259-10259/com.app.android E/uploadAvatarLog: Send
我怎样才能修好它?