我想从存储在sharedPreferences中的数组(键)中删除一项(id =“ productId”)。 我在下面编写了一个包含所有这些功能的Utility类,但是该项目仍然存在于存储的Array中,如何更改代码以实现目标。
ubuntu@ip-172-31-25-61:~/voop-global-it-project/voopglobal$ gunicorn voopglobal.wsgi
[2019-09-10 12:01:01 +0000] [27716] [INFO] Starting gunicorn 19.7.1
[2019-09-10 12:01:01 +0000] [27716] [INFO] Listening at: http://127.0.0.1:8000 (27716)
[2019-09-10 12:01:01 +0000] [27716] [INFO] Using worker: sync
[2019-09-10 12:01:01 +0000] [27720] [INFO] Booting worker with pid: 27720
[2019-09-10 12:01:01 +0000] [27720] [ERROR] Exception in worker process
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 578, in spawn_worker
worker.init_process()
File "/usr/lib/python2.7/dist-packages/gunicorn/workers/base.py", line 126, in init_process
self.load_wsgi()
File "/usr/lib/python2.7/dist-packages/gunicorn/workers/base.py", line 135, in load_wsgi
self.wsgi = self.app.wsgi()
File "/usr/lib/python2.7/dist-packages/gunicorn/app/base.py", line 67, in wsgi
self.callable = self.load()
File "/usr/lib/python2.7/dist-packages/gunicorn/app/wsgiapp.py", line 65, in load
return self.load_wsgiapp()
File "/usr/lib/python2.7/dist-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
return util.import_app(self.app_uri)
File "/usr/lib/python2.7/dist-packages/gunicorn/util.py", line 377, in import_app
__import__(module)
File "/home/ubuntu/voop-global-it-project/voopglobal/voopglobal/wsgi.py", line 12, in <module>
from django.core.wsgi import get_wsgi_application
ImportError: No module named django.core.wsgi
[2019-09-10 12:01:01 +0000] [27720] [INFO] Worker exiting (pid: 27720)
[2019-09-10 12:01:02 +0000] [27716] [INFO] Shutting down: Master
[2019-09-10 12:01:02 +0000] [27716] [INFO] Reason: Worker failed to boot.
我的活动中的以下代码:
ubuntu@ip-172-31-25-61:~$ python3 --version
Python 3.6.8
ubuntu@ip-172-31-25-61:~$ django-admin --version
2.2.5
ubuntu@ip-172-31-25-61:~$ pip3 -V
pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.6)
答案 0 :(得分:1)
您的代码不起作用,因为ArrayList
的{{1}}方法检查等于来查找您要删除的对象。您应该在remove()
类中覆盖equals()
方法,因为如果您不这样做,则ProductData
的默认设置是检查 identity :
equals()
更好的是,将class A(val id: Int)
val a1 = A(1)
val a2 = A(1)
a1 == a2 // false, they are different objects
设为ProductData
(它会生成适当的equals和hashCode方法)。
data class
我会给您更多建议:
data class A(val id: Int)
val a1 = A(1)
val a2 = A(1)
a1 == a2 // true
:如果您始终使用默认配置,请重用该实例。您可以创建诸如Gson
之类的顶级属性。这也适用于defaultGson = Gson()
。emptyList
:使用更通用的ArrayList
和List
。MutableList
应该为DataArrayList
dataArrayList
。更好的方法是将ViewModel与LiveData一起使用,但是我想您仍在学习,因此我将在以后继续介绍此高级主题:)