gpt4 book ai didi

java - 按特定顺序添加 View 并存储该顺序

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:54:11 27 4
gpt4 key购买 nike

我有一个“添加”按钮和一个带有 6 个插槽的 GridLayout,当我单击“添加”按钮时,view1 被添加到 gridlayout 中,我再次单击“添加”按钮 view2 被添加,等等.

 if (!theLayout1.isShown()) {
Grid.addView(theLayout1);
} else if (!theLayout2.isShown()) {
Grid.addView(theLayout2);
} else if (!theLayout3.isShown() ) {
Grid.addView(theLayout3);
} ..... // this goes on

添加 View 后,我检查其文本是否已添加到 sharedPrefs 中,以便在重新创建 Activity 时可以自动添加它们

if (prefs.getString("text4", null) != null) {
Grid.addView(theLayout4);
}

if (prefs.getString("text5", null) != null) {
Grid.addView(theLayout5);
}
// each view has one EditText

我的问题是,如果我删除 view1 然后再次添加它,它将按照我的意愿放置在最后一个插槽中,但是当我重新创建 Activity 时它会返回到第一个位置,因为自代码获取按顺序阅读,它将按初始顺序添加 View 。

我想在重新创建 Activity 时按照 Activity 结束前的顺序添加 View ,这可能有一个简单的逻辑解决方案,或者我只是非常错误地解决了这个问题,无论如何,需要帮助!

最佳答案

首先,您可以将 View 标签“或您标记它们的任何内容”存储在具有标签和 View 所在位置的数据结构中,然后将代码存储在 SharedPreferences 中。

public void savePreferences() {
SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(activity);
SharedPreferences.Editor prefsEditor = mPrefs.edit();
Gson gson = new Gson();
String json = gson.toJson(dataStructure, new TypeToken<DataStructure>() {
}.getType());
prefsEditor.putString("ordering", json);
prefsEditor.commit();
}

public static DataStructure loadPreferences() {
SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(activity);
Gson gson = new Gson();
String json = mPrefs.getString("ordering", "");
if (!json.equals("")) {
return (DataStructure) gson.fromJson(json, new TypeToken<DataStructure>() {
}.getType());
} else {
return new DataStructure();
}
}

然后,当您检索上述数据结构时,您可以使用以下代码根据结果的位置对结果进行排序:

Arrays.sort(dataStructure , new Comparator<DataStructureElement>() {
@Override
public int compare(DataStructureElement o1, DataStructureElement o2) {
return Integer.compare(o1.position, o2.position);
}
});

然后遍历 dataStructure 中的排序结果,并按正常顺序将 View 添加到 GridLayout。

关于java - 按特定顺序添加 View 并存储该顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36947862/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com