如何通过一种方法传递多种类型的数组列表
代码
List<PostsModel> Posts = new ArrayList<>();
List<FavoriteModel> Favorite = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_posts);
Posts = LoadArrayList("PostsList"); //Error here
Favorite = LoadArrayList("FavoriteList"); //Error here
}
public List<Object> LoadArrayList(String key) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
Gson gson = new Gson();
String json = prefs.getString(key, null);
Type type = new TypeToken<List<Object>>() {
}.getType();
return gson.fromJson(json, type);
}
我已经尝试了很多但是没用
答案 0 :(得分:2)
您可以使用Java Generics来做到这一点。
public <T> List<T> loadArrayList(String key) {
//...
Type type = new TypeToken<List<T>>() {
}.getType();
return gson.fromJson(json, type);
}
现在您可以做到
List<PostsModel> Posts = loadArrayList("PostsList");
说明
<T>
定义通用类型T 答案 1 :(得分:1)
将功能更改为
svg.selectAll(".rect")
.data(NestbyDate)
.enter()
.append("rect")
.attr("class", "rect")
.attr("x", function(d) {
return x(d.key);
})
.attr("y", function(d) {
return y(d.values.length);
})
.attr("width", x.bandwidth())
.attr("height", function(d) {
return y(0) - y(d.values.length);
});
});
喜欢这样
public <T> List<T> LoadArrayList(String key, Class<T> type) {
SharedPreferences prefs =
PreferenceManager.getDefaultSharedPreferences(context);
Gson gson = new Gson();
return gson.fromJson(json, type);
}