我有一个带有很多“概述”屏幕的移动应用程序,即不同形式的对象列表。
这些对象相当大。 Model(struct或class)有70-80个属性。
很快就需要所有这些属性,特别是在所有对象频繁发生的列表中,通常只显示8-10个属性。
进入对象的详细信息屏幕时,会消耗更多属性。
那么,你通常会如何处理这样的情况:
1)创建两个类。一个拥有另一个的子集并使用列表中的子集和详细视图中的完整类
2)只创建一个类,但只获取列表所需的属性,并在获取列表数据时使用“虚拟值”填充其余属性,并仅在详细显示时获取完整对象
3)只有一个类的定义,并始终为它获取所有内容。这是2017年,数据可能仍然比您的平均网页小
如果您需要更多信息,请提出要求。
答案 0 :(得分:2)
你绝对可以使用Model / POJO类。 就像我们在模块化编程中使用函数一样,您可以创建多个Model类,而不是创建一个具有所有属性的单个类。您可以根据所需的属性使用POJO类。
For example:-
class student{
String firstname;
String lastname;
String street;
String pincode;}
**can be converted to :-
`
class student{
StudentName name;
StudentAddress address;
}
class StudentName {
String firstname;
String lastname;
}
class StudentAddress{
String street;
String pincode;
}`
答案 1 :(得分:1)
考虑从Web服务收到的数据是从SQLite数据库中保留和查询的。
当数据在数据库中时,您可以使用一对一的关系。例如
让我们假设您有模型/ POJO,其中您将用户数据显示为列表。
class User {
//basic info showed in the list
int userId;
String name;
String emailId;
}
class UserDetail {
int id;
int userPassportId;
int userId; //foriegn key to user table
.....
// other nessesary details
}
SQL等效
CREATE TABLE user(
id INTEGER PRIMARY KEY,
name TEXT,
emailId TEXT
);
CREATE TABLE userDetails(
id INTEGER PRIMARY KEY,
user_passport_number TEXT,
user_id INTEGER,
FOREIGN KEY(user_id) REFERENCES user(id)
);
所以现在当您显示项目时,您只需查询所有用户的数据,这些数据将为您提供您可能希望在UI中显示的基本用户信息。
当您转到详细信息页面时,您可以使用用户ID进行查询以获取相关详细信息。
SELECT * FROM userDetails WHERE user_id = user_id_recived;