正如您可能从我的代码中看到的那样,我对此很新.我正在尝试编写一个简单的程序来检索一个人的朋友.这是我的代码:
public class Person {
private String name;
private String friends;
public Person(String aName) {
name = aName;
friends = "";
}
public String getFriends() {
return friends;
}
public void addFriend(Person friend) {
friends = friends + " " + friend.name;
}
public void unfriend(Person nonFriend) {
friends = friends.replace(" " + nonFriend.name, "");
}
public static void main(String[] args) {
Person dana = new Person("Dana");
Person gina = new Person("Gina");
Person john = new Person("John");
dana.addFriend(gina);
dana.addFriend(john);
john.addFriend(gina); …Run Code Online (Sandbox Code Playgroud) 我的 Main Activity 中有一个地图片段,在 onMapReady 上我添加了 300 个标记。标记分为5个类别,每个类别保存在一个List中category1(2,3,4,5) = new ArrayList。我有一个按钮,可以根据警报对话框中的用户选项将标记设置为可见或不可见,从而按类别过滤标记。
for (Marker marker : category1) {
marker.setVisible(true);.....
Run Code Online (Sandbox Code Playgroud)
一切都按其应有的方式正常工作,直到屏幕配置发生变化。我发现保持可见标记旋转的一种解决方案是在我的 onCreate 中添加
if (savedInstanceState == null) {
mapFragment.setRetainInstance(true);}
Run Code Online (Sandbox Code Playgroud)
这适用于保留当前选择,但当我尝试再次过滤时没有任何变化。地图片段的状态保留为我在配置更改之前过滤的标记。
另一方面,如果我不使用 mapFragment.setRetainInstance(true); 每次配置更改时,所有标记都会再次添加到片段上,过滤再次起作用,但我每次都必须重新过滤。
如何添加所有标记一次,然后根据类别过滤器隐藏/显示它们,在屏幕旋转之间保留可见标记并从上次状态开始再次过滤它们?
更新
这是我所拥有的(我尝试仅添加相关代码)
Boolean mSetCameraPosition;
Boolean initialMarkers;
Boolean checkBox1Checked, checkBox2Checked, checkBox3Checked, checkBox4Checked, checkBox5Checked;
private int mapTypeSelected;
CheckBox cbAllDay, cbBefore12, cbBetween1216, cbBetween1620, ccbAfter20;
AlertDialog dialog;
List<Marker> firstCategoryList = new ArrayList<>();
List<Marker> secondCategoryList = new ArrayList<>();
List<Marker> thirdCategoryList = new ArrayList<>();
List<Marker> fourthCategoryList = new ArrayList<>();
List<Marker> fifthCategoryList = new ArrayList<>(); …Run Code Online (Sandbox Code Playgroud)