我的部分数据不是按订单来的。让我解释一下:
id为1的用户发送数据(“电话号码”),但同时id为78的用户发送另一个数据(“家庭地址”)。
所有传入的数据都有相同的接收器。
当设置了每个id的所有 set 数据时,数据将被发送到mysql数据库并从临时存储中删除。
每个用户ID需要在发送完整数据之前填写6个不同的信息。
所以问题是如何使用他们的个人ID存储临时数据部分(没有将它们混合起来),只有这样我才能完成下一个任务的所有部分?
我应该使用arrayList还是其他不同的东西?
编辑(回答重复的建议):我的问题有点不同,答案根本没有帮助我!
答案 0 :(得分:1)
您可以创建对象'数据'
%unique_import_hash
然后使用%unique_import_hash
更新数据:
class Data {
private param1,param2,...,param6;
public Data(){
}
/* PARAMS getters */
/* PARAMS setters */
public void insert(){
//insert to database
}
}
每次你收到一些数据和id检查数据的类型(数据对象中的哪个参数)并在地图中更新它
HashMap
您可以为每次设置一个参数设置一个监听器,以指示所有数据都已设置并准备好插入
答案 1 :(得分:1)
正如您所说,您可以将其存储在内存中的某些结构中。我选择了一些与活动无关的方法,否则您需要跟踪活动生命周期。例如。您可以使用HashMap将实体名称(即名称,地址等)映射到其值(或者如果您要存储单个实体的多个实例,请使用其他答案中建议的某种Data类) )。就个人而言,我觉得这种方法最麻烦/杂乱,因为你需要将你的存储与你的Activity分开,或者处理所有的活动变化,以免失去状态。
第二种方法是使用SharedPreferences。为此目的创建一个单独的prefs文件,获取它们(getSharedPreferences("partial_data_dl", MODE_PRIVATE)
),将每个列存储为prefs中的一个字段,并在将它们提交到数据库之前清除它们。它比将所有内容存储在内存中更容易,并且速度不会明显变慢。
第三个是显而易见的:为什么不在数据进入时更新数据库记录?第一次插入一个只填充了一列的新记录,每隔一次发出一个更新查询以为新列添加值。这无疑是最重的解决方案,可能不适用于您的用例,但我试一试并测试它。俗话说,过早优化是万恶之源。