创建可用于更多 activity 的对象列表
Create a list of object usable in more activity
我想创建一个可供更多 activity 访问的对象列表。
我想用对象列表(不是数组)创建一个 class 。我用过这个...
public class List{
Object object1 = new Object("this", 59, true)
...
}
和activity
public class ListActivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout);
...
ArrayList<Object> array = new ArrayList<>();
array.add(Object(List.object1));
...}}
在 List.object1 中存在预期的错误方法调用。
有没有更简单高效的存储对象的方法?
您可以将数据存储在如下设置中:
设置服务:
public class SettingsService {
private static String KEY = Constants.SETTINGS_KEY;
private static Context mContext;
public static SettingsModel settings;
public SettingsService(){
mContext = YourApplicationClass.getApplicationContext();
if(settings == null){
settings = getSettings();
}
}
public static void saveSettings(SettingsModel settings){
if(settings != null){
SharedPreferences.Editor editor = mContext
.getSharedPreferences(KEY, Activity.MODE_PRIVATE).edit();
SettingsService.settings = settings;
Gson gson = new Gson();
String jsonSettings = gson.toJson(settings);
editor.putString("settings", jsonSettings );
editor.commit();
}
}
public static void saveSettings(){
if(settings == null){
settings = new SettingsModel();
}
SharedPreferences.Editor editor = mContext
.getSharedPreferences(KEY, Activity.MODE_PRIVATE).edit();
Gson gson = new Gson();
String jsonSettings = gson.toJson(settings);
editor.putString("settings", jsonSettings );
editor.commit();
}
private static SettingsModel getSettings() {
SharedPreferences editor = mContext.getSharedPreferences(KEY,
Activity.MODE_PRIVATE);
try{
String jsonSettings = editor.getString("settings","settings");
Gson gson = new Gson();
settings = gson.fromJson(jsonSettings, SettingsModel.class);
}catch (Exception e){
settings = new SettingsModel();
}
return settings;
}
}
创建设置模型,无论你想要什么对象:
public class SettingsModel {
public String email;
public String password;
// anything you need else
}
然后从您代码中的任何地方:
SettingsService.settings.email = "your email";
SettingsService.saveSettings();
也可以从代码中的任何位置:
String myEmail = SettingsService.settings.email;
还要确保您的 gradle:
compile 'com.google.code.gson:gson:2.4'
我将根据您要创建对象列表并将其用于不同 activity class.
的解决方案
第一个解决方案 - 您可以创建一个自定义应用程序class 并在 onCreate 回调方法中实例化您的对象列表。这使您可以访问其他 class
中的对象列表
public class CustomApplication extends Application {
private List<YourClassName> listOfObjects;
@Override
public void onCreate() {
super.onCreate();
listOfObjects = new ArrayList<YourClassName>();
}
private List<YourClassName> getListOfObject(){
return listOfObjects;
}
}
然后访问它,你可以使用这行代码
List<YourClassName> objectList = ((CustomApplication)getApplication()).getListOfObject();
第二种解决方案 - 您可以使用 Wrapper class 来包装您的对象列表,如下所示。
假设你有这个用户 class
public class User {
private String name;
private String email;
private String username;
public User(String name, String email, String username) {
this.name = name;
this.email = email;
this.username = username;
}
public String getName() {
return name;
}
public String getEmail() {
return email;
}
public String getUsername() {
return username;
}
}
那么包装器 class 将如下所示
public class Wrapper {
private List<User> users;
public Wrapper(List<User> users){
this.users = users;
}
public List<User> getUsers(){
return users;
}
}
您可以将 Wrapper class 转换为 Json String
Gson gson = new Gson();
String jsonString = gson.toJson(Wrapper);
您可以像这样将 json 字符串存储在共享首选项中
SharedPreferences prefs = getSharedPreferences("IDENTIFIER", Context.MODE_PRIVATE);
SharedPreferences.Editor edits = prefs.edit();
edits.putString("LIST_OBJECT", jsonString);
edits.apply();
要获取 class 中的用户列表,您将使用以下代码。像这样在 sharedpreference 中获取 json 字符串
String jListObject = prefs.getString("LIST_OBJECT", "")
然后获取用户对象列表
Wrapper listObjectWrapper = gson.fromJson(stringObject, Wrapper.class);
List<User> users = listObjectWrapper.getUsers();
第三种解决方案 - 您可以使用 TypeToken 将 json 字符串转换为对象列表,如下例所示
创建用户对象列表
List<User> objList = new ArrayList<User>();
objList.add(new User("high", "zero.yahoo.com", "zero"));
objList.add(new User("low", "one.yahoo.com", "one"));
将列表对象转换为字符串
String json = new Gson().toJson(objList);
使用第二个解决方案中的示例将 json 字符串存储在共享首选项中
当您检索 json 字符串时,您可以将其重新转换为用户的对象列表,如下所示
Type type = new TypeToken<List<DataObject>>(){}.getType();
List<DataObject> inpList = new Gson().fromJson(jsonString, type);
记得在您的应用 build.gradle 文件中添加这一行
compile 'com.google.code.gson:gson:2.4'
我想创建一个可供更多 activity 访问的对象列表。 我想用对象列表(不是数组)创建一个 class 。我用过这个...
public class List{
Object object1 = new Object("this", 59, true)
...
}
和activity
public class ListActivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout);
...
ArrayList<Object> array = new ArrayList<>();
array.add(Object(List.object1));
...}}
在 List.object1 中存在预期的错误方法调用。
有没有更简单高效的存储对象的方法?
您可以将数据存储在如下设置中: 设置服务:
public class SettingsService {
private static String KEY = Constants.SETTINGS_KEY;
private static Context mContext;
public static SettingsModel settings;
public SettingsService(){
mContext = YourApplicationClass.getApplicationContext();
if(settings == null){
settings = getSettings();
}
}
public static void saveSettings(SettingsModel settings){
if(settings != null){
SharedPreferences.Editor editor = mContext
.getSharedPreferences(KEY, Activity.MODE_PRIVATE).edit();
SettingsService.settings = settings;
Gson gson = new Gson();
String jsonSettings = gson.toJson(settings);
editor.putString("settings", jsonSettings );
editor.commit();
}
}
public static void saveSettings(){
if(settings == null){
settings = new SettingsModel();
}
SharedPreferences.Editor editor = mContext
.getSharedPreferences(KEY, Activity.MODE_PRIVATE).edit();
Gson gson = new Gson();
String jsonSettings = gson.toJson(settings);
editor.putString("settings", jsonSettings );
editor.commit();
}
private static SettingsModel getSettings() {
SharedPreferences editor = mContext.getSharedPreferences(KEY,
Activity.MODE_PRIVATE);
try{
String jsonSettings = editor.getString("settings","settings");
Gson gson = new Gson();
settings = gson.fromJson(jsonSettings, SettingsModel.class);
}catch (Exception e){
settings = new SettingsModel();
}
return settings;
}
}
创建设置模型,无论你想要什么对象:
public class SettingsModel {
public String email;
public String password;
// anything you need else
}
然后从您代码中的任何地方:
SettingsService.settings.email = "your email";
SettingsService.saveSettings();
也可以从代码中的任何位置:
String myEmail = SettingsService.settings.email;
还要确保您的 gradle:
compile 'com.google.code.gson:gson:2.4'
我将根据您要创建对象列表并将其用于不同 activity class.
的解决方案第一个解决方案 - 您可以创建一个自定义应用程序class 并在 onCreate 回调方法中实例化您的对象列表。这使您可以访问其他 class
中的对象列表public class CustomApplication extends Application {
private List<YourClassName> listOfObjects;
@Override
public void onCreate() {
super.onCreate();
listOfObjects = new ArrayList<YourClassName>();
}
private List<YourClassName> getListOfObject(){
return listOfObjects;
}
}
然后访问它,你可以使用这行代码
List<YourClassName> objectList = ((CustomApplication)getApplication()).getListOfObject();
第二种解决方案 - 您可以使用 Wrapper class 来包装您的对象列表,如下所示。
假设你有这个用户 class
public class User {
private String name;
private String email;
private String username;
public User(String name, String email, String username) {
this.name = name;
this.email = email;
this.username = username;
}
public String getName() {
return name;
}
public String getEmail() {
return email;
}
public String getUsername() {
return username;
}
}
那么包装器 class 将如下所示
public class Wrapper {
private List<User> users;
public Wrapper(List<User> users){
this.users = users;
}
public List<User> getUsers(){
return users;
}
}
您可以将 Wrapper class 转换为 Json String
Gson gson = new Gson();
String jsonString = gson.toJson(Wrapper);
您可以像这样将 json 字符串存储在共享首选项中
SharedPreferences prefs = getSharedPreferences("IDENTIFIER", Context.MODE_PRIVATE);
SharedPreferences.Editor edits = prefs.edit();
edits.putString("LIST_OBJECT", jsonString);
edits.apply();
要获取 class 中的用户列表,您将使用以下代码。像这样在 sharedpreference 中获取 json 字符串
String jListObject = prefs.getString("LIST_OBJECT", "")
然后获取用户对象列表
Wrapper listObjectWrapper = gson.fromJson(stringObject, Wrapper.class);
List<User> users = listObjectWrapper.getUsers();
第三种解决方案 - 您可以使用 TypeToken 将 json 字符串转换为对象列表,如下例所示
创建用户对象列表
List<User> objList = new ArrayList<User>();
objList.add(new User("high", "zero.yahoo.com", "zero"));
objList.add(new User("low", "one.yahoo.com", "one"));
将列表对象转换为字符串
String json = new Gson().toJson(objList);
使用第二个解决方案中的示例将 json 字符串存储在共享首选项中
当您检索 json 字符串时,您可以将其重新转换为用户的对象列表,如下所示
Type type = new TypeToken<List<DataObject>>(){}.getType();
List<DataObject> inpList = new Gson().fromJson(jsonString, type);
记得在您的应用 build.gradle 文件中添加这一行
compile 'com.google.code.gson:gson:2.4'