gpt4 book ai didi

java - 将另一个 Activity 中的项目添加到 ExpandableListView

转载 作者:行者123 更新时间:2023-11-30 09:18:10 25 4
gpt4 key购买 nike

我想从另一个 Activity 向 ExpandableListView 的子元素 Today 添加一个项目。我要添加它的 Activity 名为 LocHistory,这是将内容添加到列表的代码:

static void addListData(final Context context) {
List<NewsItem> list = listDataChild.get("Today");
NewsItem newsData = new NewsItem();
newsData = new NewsItem();
newsData.setHeadline("11.11111, 1.1111");
newsData.setSpeed("1.11KM/H");
newsData.setDirection("111");
newsData.setDate("11-1-1111 11:11:11");
list.add(0, newsData);
listDataChild.put("Today", list);
}

当我在同一个类 (LocHistory) 中调用该函数时,这会起作用。但是当我像这样在 MainActivity 中调用它时:

public class MainActivity extends Activity {

Button button2;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

button2 = (Button) this.findViewById(R.id.button2);

button2.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
LocHistory.addListData(getBaseContext());
}
});
}
}

然后列表中没有添加任何内容。是否可以将另一个 Activity 的项目添加到 ExpandableListView?我想是否添加了类 LocHistory 不会打开的内容,所以我认为带有 Intent 的 startActivity 在这里不是一个选项(但我不确定) .

(Java 源代码可以在这里找到: MainActivity.java , LocHistory.java , NewsItem.javaExpandableListAdapter.java )

编辑:

正如其他论坛上的一些人所指出的,我现在正在使用 SharedPreferences。我正在使用这段代码:

static void addListData (int TimeStamp, final String lat, final String lng, final String speed,
final String direction, final Context context){

int todaystamp = startOf("today");
int yesterdaystamp = startOf("yesterday");
String Datetime = DateFormat.format("dd-MM-yyyy kk:mm:ss", new Date(TimeStamp * 1000L)).toString();

SharedPreferences pref = context.getSharedPreferences("myPrefs", MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();

if (TimeStamp >= todaystamp) {
editor.putString("Today", "*headline=" + lat + ", " + lng + ";speed=" + speed + ";direction=" + direction + ";date=" + Datetime + ";");
} else if (TimeStamp >= yesterdaystamp) {
editor.putString("Yesterday", "*headline=" + lat + ", " + lng + ";speed=" + speed + ";direction=" + direction + ";date=" + Datetime + ";");
} else if (TimeStamp < yesterdaystamp) {
editor.putString("Older", "*headline=" + lat + ", " + lng + ";speed=" + speed + ";direction=" + direction + ";date=" + Datetime + ";");
}

editor.commit();
}

但现在我遇到了一个问题,当我将一个项目添加到同一键上的 SharedPreferences 时,它将覆盖以前的数据。如何在不覆盖以前的数据的情况下将数据添加到同一个 key ?是否可以先获取数据,然后将项目加入数据,然后将数据添加到 SharedPreferences

最佳答案

对于你上次的编辑,你可以试试这个:

static void addListData(int TimeStamp, final String lat, final String lng,
final String speed, final String direction, final Context context) {

int todaystamp = startOf("today");
int yesterdaystamp = startOf("yesterday");
String Datetime = DateFormat.format("dd-MM-yyyy kk:mm:ss", new Date(TimeStamp * 1000L)).toString();

String location = "*headline=" + lat + ", " + lng + ";speed=" + speed
+ ";direction=" + direction + ";date=" + Datetime + ";";

SharedPreferences pref = context.getSharedPreferences("myPrefs",
MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();

if (TimeStamp >= todaystamp) {
String today = pref.getString("Today",null);
if (today != null) {
StringBuilder str = new StringBuilder(today);
str.insert(0, location + ", ");
editor.putString("Today", str.toString());
} else {
editor.putString("Today", location);
}
} else if (TimeStamp >= yesterdaystamp) {
String yesterday = pref.getString("Yesterday",null);
if (yesterday != null) {
StringBuilder str = new StringBuilder(yesterday);
str.insert(0, location + ", ");
editor.putString("Yesterday", str.toString());
} else {
editor.putString("Yesterday", location);
}
} else if (TimeStamp < yesterdaystamp) {
String older = pref.getString("Older",null);
if (older != null) {
StringBuilder str = new StringBuilder(older);
str.insert(0, location + ", ");
editor.putString("Older", str.toString());
} else {
editor.putString("Older", location);
}
}

editor.commit();
}

这将确保它不会覆盖键,但如果存在则追加。 (这是通过检查特定键的 SharedPreferences 是否不为 null 来完成的)。

我使用 StringBuilderinsert这种情况下的方法。

关于java - 将另一个 Activity 中的项目添加到 ExpandableListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18622417/

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