android 适配器内的改造调用
Retrofit call inside an adapter in android
我正在适配器内部执行改造调用。我已经成功实施并且它也给了我想要的输出但是 在适配器下执行此操作是一个好习惯吗???? ?
我的应用是 --> 产品销售应用 --> 在我的购物车中 --> 显示用户想要购买的产品列表 --> 为此需要一个适配器 --> 那里我正在执行滑动删除功能 --> 对删除 (holder.delete.setonclicklistener {...}
) 按钮执行改造调用
my code is-->
holder.tvDelete.setOnClickListener(View.OnClickListener { view ->
progressDialog.show()
val token: String = SharedPrefManager.getInstance(context).user.access_token.toString()
RetrofitClient.instance.deletecart(token, id.toString())
.enqueue(object : Callback<DeleteResponse> {
override fun onFailure(call: Call<DeleteResponse>, t: Throwable) {
Log.d("res", "" + t)
}
override fun onResponse(
call: Call<DeleteResponse>,
response: Response<DeleteResponse>
) {
var res = response
progressDialog.dismiss()
(context as Activity).finish()
if (res.body()?.status == 200) {
Toast.makeText(
context,
res.body()?.message,
Toast.LENGTH_LONG
).show()
progress()
mItemManger.removeShownLayouts(holder.swipelayout)
notifyItemChanged(position)
notifyItemRemoved(position)
dataList?.removeAt(position)
notifyItemRangeChanged(position, dataList?.size!!)
mItemManger.closeAllItems()
} else {
try {
val jObjError =
JSONObject(response.errorBody()!!.string())
Toast.makeText(
context,
jObjError.getString("message") + jObjError.getString("user_msg"),
Toast.LENGTH_LONG
).show()
} catch (e: Exception) {
Toast.makeText(context, e.message, Toast.LENGTH_LONG).show()
Log.e("errorrr", e.message)
}
}
}
})
mItemManger.bindView(holder.itemView, position)
})
以上代码有效
我也经历过这个 -->
这个 link 我执行了但是在 activity 我不会在 activity
中访问这个代码
mItemManger.removeShownLayouts(holder.swipelayout)
notifyItemChanged(position)
notifyItemRemoved(position)
dataList?.removeAt(position)
notifyItemRangeChanged(position, dataList?.size!!)
mItemManger.closeAllItems()
需要对此进行澄清
需要帮助谢谢
编辑:-- 我按照上面的 link 这是我的代码
interface
interface OnItemClick {
fun onItemClicked(position: Int)
}
activity
class AddToCart:BaseClassActivity(), OnItemClick{
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.add_to_cart)
getWindow().setExitTransition(null)
getWindow().setEnterTransition(null)
var mActionBarToolbar = findViewById<androidx.appcompat.widget.Toolbar>(R.id.toolbartable);
setSupportActionBar(mActionBarToolbar);
// add back arrow to toolbar
setEnabledTitle()
mActionBarToolbar.setNavigationOnClickListener(View.OnClickListener {
onBackPressed()
})
placeorder.setOnClickListener {
val intent:Intent=Intent(applicationContext, AddressActivity::class.java)
startActivity(intent)
}
loadCart()
}
fun loadCart(){
val model = ViewModelProvider(this)[CartViewModel::class.java]
model.CartList?.observe(this, object : Observer<CartResponse> {
override fun onChanged(t: CartResponse?) {
generateDataList(t?.data?.toMutableList())
totalamount.setText(t?.total.toString())
}
})
}
fun generateDataList(dataList: MutableList<DataCart?>?) {
val recyclerView=findViewById<RecyclerView>(R.id.addtocartrecyleview) as? RecyclerView
val linear:LinearLayoutManager=
LinearLayoutManager(applicationContext, LinearLayoutManager.VERTICAL, false)
recyclerView?.layoutManager=linear
val adapter = CartAdapter(this@AddToCart, dataList)
recyclerView?.adapter=adapter
recyclerView?.addItemDecoration(DividerItemDecorator(resources.getDrawable(R.drawable.divider)))
adapter.notifyDataSetChanged()
adapter.setItemClick(this)
if (dataList?.isEmpty() ?: true) {
recyclerView?.setVisibility(View.GONE)
totalamount.setVisibility(View.GONE)
fl_footer.setVisibility(View.GONE)
placeorder.setVisibility(View.GONE)
emptytext.setVisibility(View.VISIBLE)
} else {
recyclerView?.setVisibility(View.VISIBLE)
totalamount.setVisibility(View.VISIBLE)
fl_footer.setVisibility(View.VISIBLE)
placeorder.setVisibility(View.VISIBLE)
emptytext.setVisibility(View.GONE)
}
recyclerView?.addOnScrollListener(object :
RecyclerView.OnScrollListener() {
override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
super.onScrollStateChanged(recyclerView, newState)
Log.e("RecyclerView", "onScrollStateChanged")
}
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
}
})
}
override fun onBackPressed() {
super.onBackPressed()
val intent = Intent(this, HomeActivity::class.java)
startActivity(intent)
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
android.R.id.home -> {
NavUtils.navigateUpFromSameTask(this)
true
}
else -> super.onOptionsItemSelected(item)
}
}
override fun onResume() {
super.onResume()
loadCart()
}
override fun onItemClicked(position: Int) {
val token: String = SharedPrefManager.getInstance(applicationContext).user.access_token.toString()
RetrofitClient.instance.deletecart(token, id.toString())
.enqueue(object : Callback<DeleteResponse> {
override fun onFailure(call: Call<DeleteResponse>, t: Throwable) {
Log.d("res", "" + t)
}
override fun onResponse(
call: Call<DeleteResponse>,
response: Response<DeleteResponse>
) {
var res = response
(applicationContext as Activity).finish()
if (res.body()?.status == 200) {
Toast.makeText(
applicationContext,
res.body()?.message,
Toast.LENGTH_LONG
).show()
val intent =
Intent(applicationContext, AddToCart::class.java)
intent.flags =
Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_MULTIPLE_TASK
applicationContext.startActivity(intent)
(applicationContext as Activity?)!!.overridePendingTransition(0, 0)
} else {
try {
val jObjError =
JSONObject(response.errorBody()!!.string())
Toast.makeText(
applicationContext,
jObjError.getString("message") + jObjError.getString("user_msg"),
Toast.LENGTH_LONG
).show()
} catch (e: Exception) {
Toast.makeText(applicationContext, e.message, Toast.LENGTH_LONG).show()
Log.e("errorrr", e.message)
}
}
}
})
}
}
adapter:--
class CartAdapter(private val context: Context, private val dataList: MutableList<DataCart?>?) :
RecyclerSwipeAdapter<CartAdapter.CustomViewHolder>() , AdapterView.OnItemSelectedListener{ //added RecyclerSwipeAdapter and override
private var itemClick: OnItemClick? = null
inner class CustomViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView),
View.OnClickListener {
val mView: View
val swipelayout:SwipeLayout
val productiamge: ImageView
val productname: TextView
val productcategory: TextView
val productprice: TextView
val tvDelete:TextView
val spin:Spinner
init {
mView = itemView
productiamge= mView.findViewById(R.id.imagecart)
productname= mView.findViewById(R.id.imagenamecart)
productcategory= mView.findViewById(R.id.imagecategory)
productprice =mView.findViewById(R.id.price)
swipelayout=mView.findViewById(R.id.swipe)
tvDelete=mView.findViewById(R.id.tvDelete)
spin = mView.findViewById(R.id.spinner) as Spinner
tvDelete.setClickable(true);
tvDelete.setOnClickListener(this);
}
override fun onClick(v: View?) {
if (itemClick != null) {
itemClick!!.onItemClicked(getPosition());
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CustomViewHolder {
val layoutInflater = LayoutInflater.from(parent.context)
val view: View = layoutInflater.inflate(R.layout.addtocart_item, parent, false)
return CustomViewHolder(view)
}
override fun getSwipeLayoutResourceId(position: Int): Int {
return R.id.swipe;
}
override fun onBindViewHolder(holder: CustomViewHolder, position: Int) {
val progressDialog :ProgressDialog= ProgressDialog(context);
holder.productname.text = dataList?.get(position)?.product?.name ?: null
holder.productcategory.text = "(" +dataList?.get(position)?.product?.product_category +")"
holder.productprice.text = dataList?.get(position)?.product?.cost.toString()
Glide.with(context).load(dataList?.get(position)?.product?.product_images)
.into(holder.productiamge)
holder.swipelayout.setShowMode(SwipeLayout.ShowMode.PullOut)
Log.e("checkidd", dataList?.get(position)?.product?.id.toString())
// Drag From Right
// Drag From Right
holder.swipelayout.addDrag(
SwipeLayout.DragEdge.Right,
holder.swipelayout.findViewById(R.id.bottom_wrapper)
)
val id =dataList?.get(position)?.product?.id
holder.tvDelete.setOnClickListener(View.OnClickListener { view ->
mItemManger.removeShownLayouts(holder.swipelayout)
notifyItemChanged(position)
notifyItemRemoved(position)
dataList?.removeAt(position)
notifyItemRangeChanged(position, dataList?.size!!)
mItemManger.closeAllItems()
})
mItemManger.bindView(holder.itemView, position)
}
override fun getItemCount() = dataList?.size ?: 0
override fun onNothingSelected(p0: AdapterView<*>?) {
TODO("Not yet implemented")
}
override fun onItemSelected(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) {
}
fun getItemClick(): OnItemClick? {
return itemClick
}
fun setItemClick(itemClick: OnItemClick?) {
this.itemClick = itemClick
}
}
但我没有得到想要的输出帮助我
这不是在适配器中进行 API 调用的好习惯。您可以创建从适配器到 activity 的回调,并且应该在 activity 本身中调用此 API 代码。如果您需要来自适配器的一些引用,那么您可以在适配器中创建方法并通过创建适配器的对象在 activity 中调用这些方法。
在用户 EpicPandaForce 的帮助下,我得到了问题的答案
接口::----
interface OnItemClick {
fun DeleteItem(position: Int, id:Int)
}
适配器::----
private var itemClick: OnItemClick? = null
.
.
.
holder.tvDelete.setOnClickListener(View.OnClickListener { view ->
mItemManger.removeShownLayouts(holder.swipelayout)
notifyItemChanged(position)
notifyItemRemoved(position)
dataList?.removeAt(position)
itemClick?.DeleteItem(position,id!!.toInt())
notifyItemRangeChanged(position, dataList?.size!!)
mItemManger.closeAllItems()
})
mItemManger.bindView(holder.itemView, position)
}
.
.
.
fun setItemClick(itemClick: OnItemClick?) {
this.itemClick = itemClick
}
Activity::----
class AddToCart:BaseClassActivity(), OnItemClick{
.
.
.
onCreate(){
adapter.setItemClick(this);
.
.
.
}
override fun DeleteItem(position: Int, id:Int) {
progressDialog?.show()
viewModel.product_id.value =id.toString()
viewModel.loaddelete()
viewModel.Results.observe(this) { result ->
when (result) {
CartViewModel.Result.Missing -> {
Toast.makeText(
applicationContext, "product is missing", Toast.LENGTH_LONG
).show()
}
CartViewModel.Result.Success -> {
finish()
val intent =
Intent(applicationContext, AddToCart::class.java)
intent.flags =
Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_MULTIPLE_TASK
startActivity(intent)
overridePendingTransition(0, 0) }
else ->
{
Toast.makeText(applicationContext,"hello",Toast.LENGTH_LONG).show()
}
}
}
}
视图模型::--------
fun loaddelete(){
val id = product_id.value!!.toString().trim()
val token: String = SharedPrefManager.getInstance(getApplication()).user.access_token.toString()
RetrofitClient.instance.deletecart(token, id)
.enqueue(object : Callback<DeleteResponse> {
override fun onFailure(call: Call<DeleteResponse>, t: Throwable) {
loginResultEmitter.emit(CartViewModel.Result.NetworkFailure)
Log.d("res", "" + t)
}
override fun onResponse(
call: Call<DeleteResponse>,
response: Response<DeleteResponse>
) {
var res = response
if (res.body()?.status == 200) {
Toast.makeText(
getApplication(),
res.body()?.message,
Toast.LENGTH_LONG
).show()
loginResultEmitter.emit(CartViewModel.Result.Success)
} else {
try {
val jObjError =
JSONObject(response.errorBody()!!.string())
Toast.makeText(
getApplication(),
jObjError.getString("message") + jObjError.getString("user_msg"),
Toast.LENGTH_LONG
).show()
} catch (e: Exception) {
Toast.makeText(getApplication(), e.message, Toast.LENGTH_LONG).show()
Log.e("errorrr", e.message)
}
}
}
})
}
我正在适配器内部执行改造调用。我已经成功实施并且它也给了我想要的输出但是 在适配器下执行此操作是一个好习惯吗???? ?
我的应用是 --> 产品销售应用 --> 在我的购物车中 --> 显示用户想要购买的产品列表 --> 为此需要一个适配器 --> 那里我正在执行滑动删除功能 --> 对删除 (holder.delete.setonclicklistener {...}
) 按钮执行改造调用
my code is-->
holder.tvDelete.setOnClickListener(View.OnClickListener { view ->
progressDialog.show()
val token: String = SharedPrefManager.getInstance(context).user.access_token.toString()
RetrofitClient.instance.deletecart(token, id.toString())
.enqueue(object : Callback<DeleteResponse> {
override fun onFailure(call: Call<DeleteResponse>, t: Throwable) {
Log.d("res", "" + t)
}
override fun onResponse(
call: Call<DeleteResponse>,
response: Response<DeleteResponse>
) {
var res = response
progressDialog.dismiss()
(context as Activity).finish()
if (res.body()?.status == 200) {
Toast.makeText(
context,
res.body()?.message,
Toast.LENGTH_LONG
).show()
progress()
mItemManger.removeShownLayouts(holder.swipelayout)
notifyItemChanged(position)
notifyItemRemoved(position)
dataList?.removeAt(position)
notifyItemRangeChanged(position, dataList?.size!!)
mItemManger.closeAllItems()
} else {
try {
val jObjError =
JSONObject(response.errorBody()!!.string())
Toast.makeText(
context,
jObjError.getString("message") + jObjError.getString("user_msg"),
Toast.LENGTH_LONG
).show()
} catch (e: Exception) {
Toast.makeText(context, e.message, Toast.LENGTH_LONG).show()
Log.e("errorrr", e.message)
}
}
}
})
mItemManger.bindView(holder.itemView, position)
})
以上代码有效
我也经历过这个 -->
这个 link 我执行了但是在 activity 我不会在 activity
中访问这个代码 mItemManger.removeShownLayouts(holder.swipelayout)
notifyItemChanged(position)
notifyItemRemoved(position)
dataList?.removeAt(position)
notifyItemRangeChanged(position, dataList?.size!!)
mItemManger.closeAllItems()
需要对此进行澄清
需要帮助谢谢
编辑:-- 我按照上面的 link 这是我的代码
interface
interface OnItemClick {
fun onItemClicked(position: Int)
}
activity
class AddToCart:BaseClassActivity(), OnItemClick{
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.add_to_cart)
getWindow().setExitTransition(null)
getWindow().setEnterTransition(null)
var mActionBarToolbar = findViewById<androidx.appcompat.widget.Toolbar>(R.id.toolbartable);
setSupportActionBar(mActionBarToolbar);
// add back arrow to toolbar
setEnabledTitle()
mActionBarToolbar.setNavigationOnClickListener(View.OnClickListener {
onBackPressed()
})
placeorder.setOnClickListener {
val intent:Intent=Intent(applicationContext, AddressActivity::class.java)
startActivity(intent)
}
loadCart()
}
fun loadCart(){
val model = ViewModelProvider(this)[CartViewModel::class.java]
model.CartList?.observe(this, object : Observer<CartResponse> {
override fun onChanged(t: CartResponse?) {
generateDataList(t?.data?.toMutableList())
totalamount.setText(t?.total.toString())
}
})
}
fun generateDataList(dataList: MutableList<DataCart?>?) {
val recyclerView=findViewById<RecyclerView>(R.id.addtocartrecyleview) as? RecyclerView
val linear:LinearLayoutManager=
LinearLayoutManager(applicationContext, LinearLayoutManager.VERTICAL, false)
recyclerView?.layoutManager=linear
val adapter = CartAdapter(this@AddToCart, dataList)
recyclerView?.adapter=adapter
recyclerView?.addItemDecoration(DividerItemDecorator(resources.getDrawable(R.drawable.divider)))
adapter.notifyDataSetChanged()
adapter.setItemClick(this)
if (dataList?.isEmpty() ?: true) {
recyclerView?.setVisibility(View.GONE)
totalamount.setVisibility(View.GONE)
fl_footer.setVisibility(View.GONE)
placeorder.setVisibility(View.GONE)
emptytext.setVisibility(View.VISIBLE)
} else {
recyclerView?.setVisibility(View.VISIBLE)
totalamount.setVisibility(View.VISIBLE)
fl_footer.setVisibility(View.VISIBLE)
placeorder.setVisibility(View.VISIBLE)
emptytext.setVisibility(View.GONE)
}
recyclerView?.addOnScrollListener(object :
RecyclerView.OnScrollListener() {
override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
super.onScrollStateChanged(recyclerView, newState)
Log.e("RecyclerView", "onScrollStateChanged")
}
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
}
})
}
override fun onBackPressed() {
super.onBackPressed()
val intent = Intent(this, HomeActivity::class.java)
startActivity(intent)
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
android.R.id.home -> {
NavUtils.navigateUpFromSameTask(this)
true
}
else -> super.onOptionsItemSelected(item)
}
}
override fun onResume() {
super.onResume()
loadCart()
}
override fun onItemClicked(position: Int) {
val token: String = SharedPrefManager.getInstance(applicationContext).user.access_token.toString()
RetrofitClient.instance.deletecart(token, id.toString())
.enqueue(object : Callback<DeleteResponse> {
override fun onFailure(call: Call<DeleteResponse>, t: Throwable) {
Log.d("res", "" + t)
}
override fun onResponse(
call: Call<DeleteResponse>,
response: Response<DeleteResponse>
) {
var res = response
(applicationContext as Activity).finish()
if (res.body()?.status == 200) {
Toast.makeText(
applicationContext,
res.body()?.message,
Toast.LENGTH_LONG
).show()
val intent =
Intent(applicationContext, AddToCart::class.java)
intent.flags =
Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_MULTIPLE_TASK
applicationContext.startActivity(intent)
(applicationContext as Activity?)!!.overridePendingTransition(0, 0)
} else {
try {
val jObjError =
JSONObject(response.errorBody()!!.string())
Toast.makeText(
applicationContext,
jObjError.getString("message") + jObjError.getString("user_msg"),
Toast.LENGTH_LONG
).show()
} catch (e: Exception) {
Toast.makeText(applicationContext, e.message, Toast.LENGTH_LONG).show()
Log.e("errorrr", e.message)
}
}
}
})
}
}
adapter:--
class CartAdapter(private val context: Context, private val dataList: MutableList<DataCart?>?) :
RecyclerSwipeAdapter<CartAdapter.CustomViewHolder>() , AdapterView.OnItemSelectedListener{ //added RecyclerSwipeAdapter and override
private var itemClick: OnItemClick? = null
inner class CustomViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView),
View.OnClickListener {
val mView: View
val swipelayout:SwipeLayout
val productiamge: ImageView
val productname: TextView
val productcategory: TextView
val productprice: TextView
val tvDelete:TextView
val spin:Spinner
init {
mView = itemView
productiamge= mView.findViewById(R.id.imagecart)
productname= mView.findViewById(R.id.imagenamecart)
productcategory= mView.findViewById(R.id.imagecategory)
productprice =mView.findViewById(R.id.price)
swipelayout=mView.findViewById(R.id.swipe)
tvDelete=mView.findViewById(R.id.tvDelete)
spin = mView.findViewById(R.id.spinner) as Spinner
tvDelete.setClickable(true);
tvDelete.setOnClickListener(this);
}
override fun onClick(v: View?) {
if (itemClick != null) {
itemClick!!.onItemClicked(getPosition());
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CustomViewHolder {
val layoutInflater = LayoutInflater.from(parent.context)
val view: View = layoutInflater.inflate(R.layout.addtocart_item, parent, false)
return CustomViewHolder(view)
}
override fun getSwipeLayoutResourceId(position: Int): Int {
return R.id.swipe;
}
override fun onBindViewHolder(holder: CustomViewHolder, position: Int) {
val progressDialog :ProgressDialog= ProgressDialog(context);
holder.productname.text = dataList?.get(position)?.product?.name ?: null
holder.productcategory.text = "(" +dataList?.get(position)?.product?.product_category +")"
holder.productprice.text = dataList?.get(position)?.product?.cost.toString()
Glide.with(context).load(dataList?.get(position)?.product?.product_images)
.into(holder.productiamge)
holder.swipelayout.setShowMode(SwipeLayout.ShowMode.PullOut)
Log.e("checkidd", dataList?.get(position)?.product?.id.toString())
// Drag From Right
// Drag From Right
holder.swipelayout.addDrag(
SwipeLayout.DragEdge.Right,
holder.swipelayout.findViewById(R.id.bottom_wrapper)
)
val id =dataList?.get(position)?.product?.id
holder.tvDelete.setOnClickListener(View.OnClickListener { view ->
mItemManger.removeShownLayouts(holder.swipelayout)
notifyItemChanged(position)
notifyItemRemoved(position)
dataList?.removeAt(position)
notifyItemRangeChanged(position, dataList?.size!!)
mItemManger.closeAllItems()
})
mItemManger.bindView(holder.itemView, position)
}
override fun getItemCount() = dataList?.size ?: 0
override fun onNothingSelected(p0: AdapterView<*>?) {
TODO("Not yet implemented")
}
override fun onItemSelected(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) {
}
fun getItemClick(): OnItemClick? {
return itemClick
}
fun setItemClick(itemClick: OnItemClick?) {
this.itemClick = itemClick
}
}
但我没有得到想要的输出帮助我
这不是在适配器中进行 API 调用的好习惯。您可以创建从适配器到 activity 的回调,并且应该在 activity 本身中调用此 API 代码。如果您需要来自适配器的一些引用,那么您可以在适配器中创建方法并通过创建适配器的对象在 activity 中调用这些方法。
在用户 EpicPandaForce 的帮助下,我得到了问题的答案
接口::----
interface OnItemClick {
fun DeleteItem(position: Int, id:Int)
}
适配器::----
private var itemClick: OnItemClick? = null
.
.
.
holder.tvDelete.setOnClickListener(View.OnClickListener { view ->
mItemManger.removeShownLayouts(holder.swipelayout)
notifyItemChanged(position)
notifyItemRemoved(position)
dataList?.removeAt(position)
itemClick?.DeleteItem(position,id!!.toInt())
notifyItemRangeChanged(position, dataList?.size!!)
mItemManger.closeAllItems()
})
mItemManger.bindView(holder.itemView, position)
}
.
.
.
fun setItemClick(itemClick: OnItemClick?) {
this.itemClick = itemClick
}
Activity::----
class AddToCart:BaseClassActivity(), OnItemClick{
.
.
.
onCreate(){
adapter.setItemClick(this);
.
.
.
}
override fun DeleteItem(position: Int, id:Int) {
progressDialog?.show()
viewModel.product_id.value =id.toString()
viewModel.loaddelete()
viewModel.Results.observe(this) { result ->
when (result) {
CartViewModel.Result.Missing -> {
Toast.makeText(
applicationContext, "product is missing", Toast.LENGTH_LONG
).show()
}
CartViewModel.Result.Success -> {
finish()
val intent =
Intent(applicationContext, AddToCart::class.java)
intent.flags =
Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_MULTIPLE_TASK
startActivity(intent)
overridePendingTransition(0, 0) }
else ->
{
Toast.makeText(applicationContext,"hello",Toast.LENGTH_LONG).show()
}
}
}
}
视图模型::--------
fun loaddelete(){
val id = product_id.value!!.toString().trim()
val token: String = SharedPrefManager.getInstance(getApplication()).user.access_token.toString()
RetrofitClient.instance.deletecart(token, id)
.enqueue(object : Callback<DeleteResponse> {
override fun onFailure(call: Call<DeleteResponse>, t: Throwable) {
loginResultEmitter.emit(CartViewModel.Result.NetworkFailure)
Log.d("res", "" + t)
}
override fun onResponse(
call: Call<DeleteResponse>,
response: Response<DeleteResponse>
) {
var res = response
if (res.body()?.status == 200) {
Toast.makeText(
getApplication(),
res.body()?.message,
Toast.LENGTH_LONG
).show()
loginResultEmitter.emit(CartViewModel.Result.Success)
} else {
try {
val jObjError =
JSONObject(response.errorBody()!!.string())
Toast.makeText(
getApplication(),
jObjError.getString("message") + jObjError.getString("user_msg"),
Toast.LENGTH_LONG
).show()
} catch (e: Exception) {
Toast.makeText(getApplication(), e.message, Toast.LENGTH_LONG).show()
Log.e("errorrr", e.message)
}
}
}
})
}