Как удалить SharedPreference после нажатия на элемент в представлении переработчика с kotlin - PullRequest
0 голосов
/ 09 июля 2019

Я создаю приложение для Android с Kotlin. Описание приложения выглядит следующим образом: горизонтальное представление переработчика, которое содержит весь список категорий, я использую адаптер.Затем, когда я нажимаю на элемент в этом списке, список продуктов, представленных в списке, появляется внизу в обзоре переработчика.Расположение списка товаров осуществляется двумя способами: либо списком, либо сеткой.следующий код - это действие:

class CategoryByProduct : AppCompatActivity(), CategoryAdapter.OnItemClickListener {
    var mobileApi: MobileApi? = null


    override fun onItemClick(view: View, viewModel: ProductCategoryData) {
    Utility().removeValue(this,"Products")
        var params = HashMap<String, String>()
        params["ProductCategoryID"] = viewModel.id.toString()
        GlobalScope.launch(Dispatchers.IO) {
            val products = mobileApi!!.apiMobileProductsGetAllPost(params, 0, 50, "", "")

            Utility().setArrayDataByKeyValue(this@CategoryByProduct, "Products", products)
            withContext(Dispatchers.Main) {
                recyclerViewProductByCategory.apply {
                    recyclerViewProductByCategory.layoutManager =
                        StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL)
                    recyclerViewProductByCategory.adapter = ProductAdapter(products)
                }

            }

        }

    }

    override fun onResume() {
        super.onResume()
        val productsSp = Utility().getArrayDataByKey(this@CategoryByProduct, "Products")

        gridProducts.setOnClickListener {
            recyclerViewProductByCategory.layoutManager =
                StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL)
            recyclerViewProductByCategory.adapter = productsSp?.let { it ->
                ProductAdapter(
                    it
                )
            }
            gridProducts.visibility = View.INVISIBLE
            listProducts.visibility = View.VISIBLE

        }
        listProducts.setOnClickListener {
            recyclerViewProductByCategory.layoutManager =
                LinearLayoutManager(this@CategoryByProduct, RecyclerView.VERTICAL, false)
            recyclerViewProductByCategory.adapter = productsSp?.let { it -> ProductAdapterList(it) }
            listProducts.visibility = View.INVISIBLE
            gridProducts.visibility = View.VISIBLE
        }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.list_product_by_category)
        mobileApi = MobileApi()
        val params = HashMap<String, String>()
        GlobalScope.launch(Dispatchers.IO) {

            val categories = mobileApi!!.apiMobileProductCategoriesGetAllPost(params, 0, 50, "", "")
            val products = mobileApi!!.apiMobileProductsGetAllPost(params, 0, 50, "", "")
            withContext(Dispatchers.Main) {
                recyclerViewCategories.apply {
                    recyclerViewCategories.layoutManager =
                        LinearLayoutManager(this@CategoryByProduct, RecyclerView.HORIZONTAL, false)
                    recyclerViewCategories.adapter = CategoryAdapter(categories, this@CategoryByProduct)
                    productNumber.text = "${products.size} Products"
                }
            }

        }
    }


}

Моя проблема в том, что когда я нажимаю на категорию, появляется список принадлежащих товаров, а затем, когда я нажимаю на другую категорию, появляется список товаров с последним товаром.Не в списке товаров категории кликали.Я думаю, чтобы удалить общие предпочтения и до сих пор не работает.следующий код предназначен для общих настроек:

class Utility {


    fun setArrayDataByKeyValue(context: Context, key: String, DataArrayList: Array<ProductData>) {
        val arrayString = Gson().toJson(DataArrayList)
        val sharedPreferences = context.getSharedPreferences(context.packageName, Context.MODE_PRIVATE)
        sharedPreferences.edit().putString(key, arrayString).apply()
    }


    fun getArrayDataByKey(context: Context, key: String): Array<ProductData>? {
        val sharedPreferences = context.getSharedPreferences(context.packageName, Context.MODE_PRIVATE)
        val emptyList = Gson().toJson(ArrayList<ProductData>())
        return Gson().fromJson<Array<ProductData>>(sharedPreferences.getString(key, emptyList), object :
            TypeToken<Array<ProductData>>() {

        }.type)

    }

    fun removeValue(context: Context, key: String) {
        val sharedPreferences = context.getSharedPreferences(context.packageName, Context.MODE_PRIVATE)
        val editor: SharedPreferences.Editor = sharedPreferences.edit()
        editor.remove(key)
        editor.apply()
    }

}

Как мне сделать мой код функциональным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...