Java 将其他活动中的项目添加到ExpandableListView

Java 将其他活动中的项目添加到ExpandableListView,java,android,android-activity,hashmap,expandablelistview,Java,Android,Android Activity,Hashmap,Expandablelistview,我想将另一个活动中的一个项目添加到子项到ExpandableListView。我要添加它的活动名为LocHistory,下面是一个代码,用于向列表中添加内容: static void addListData(最终上下文){ List=listDataChild.get(“今天”); NewsItem newsData=新的NewsItem(); newsData=新的NewsItem(); newsData.setHeadline(“11.11111,1.1111”); newsData.set

我想将另一个活动中的一个项目添加到子项
ExpandableListView
。我要添加它的活动名为
LocHistory
,下面是一个代码,用于向列表中添加内容:

static void addListData(最终上下文){
List=listDataChild.get(“今天”);
NewsItem newsData=新的NewsItem();
newsData=新的NewsItem();
newsData.setHeadline(“11.11111,1.1111”);
newsData.setSpeed(“1.11KM/H”);
newsData.setDirection(“111”);
newsData.setDate(“11-1-11111:11:11”);
列表。添加(0,新闻数据);
listDataChild.put(“今天”,list);
}
当我在同一个类(
LocHistory
)中调用该函数时,这就起作用了。但是当我在
MainActivity
中这样调用它时:

公共类MainActivity扩展活动{
按钮2;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button2=(Button)this.findViewById(R.id.button2);
button2.setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
LocHistory.addListData(getBaseContext());
}
});
}
}
那么列表中没有添加任何内容。是否可以将其他活动中的项目添加到
ExpandableListView
?我想知道是否添加了一些类
LocHistory
不会打开的内容,因此我认为
startActivity
的意图在这里不是一个选项(但我不确定)

(java源代码可以在这里找到: , , 和 )

编辑:

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

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();
}
static void addListData(int时间戳、最终字符串lat、最终字符串lng、最终字符串速度、,
最终字符串方向、最终上下文){
int todaystamp=startOf(“今天”);
int yesterdaystamp=startOf(“昨天”);
字符串Datetime=DateFormat.format(“dd-MM-yyy-kk:MM:ss”,新日期(时间戳*1000L)).toString();
SharedReferences pref=context.getSharedReferences(“myPrefs”,MODE\u PRIVATE);
SharedReferences.Editor=pref.edit();
如果(时间戳>=今天戳){
编辑器.putString(“今天”、“标题“+lat+”、“+lng+”、“+speed+”、“+speed+”、“+direction+”、“+Datetime+”;”);
}else if(时间戳>=昨天戳){
编辑器.putString(“昨天”、“标题”=“+lat+”、“+lng+”、“速度”=“+speed+”、“方向”=“+direction+”、“日期”=“+Datetime+”;”);
}else if(时间戳<昨天戳){
编辑器.putString(“较旧的”、“*headline=“+lat+”、“+lng+”;速度=“+speed+”;方向=“+direction+”;日期=“+Datetime+”;”);
}
commit();
}

但是现在我遇到了一个问题,当我在同一个键上向
SharedReferences
添加一个项目时,它将覆盖以前的数据。如何在不覆盖以前的数据的情况下向同一密钥添加数据?是否可以先获取数据,然后将项目加入到数据中,然后将数据添加到
共享参考文件中?

对于上次编辑,您可以尝试以下操作:

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();
}
static void addListData(int时间戳、最终字符串lat、最终字符串lng、,
最终字符串速度、最终字符串方向、最终上下文){
int todaystamp=startOf(“今天”);
int yesterdaystamp=startOf(“昨天”);
字符串Datetime=DateFormat.format(“dd-MM-yyy-kk:MM:ss”,新日期(时间戳*1000L)).toString();
字符串位置=“*headline=“+lat+”,“+lng+”;速度=“+speed
+“direction=“+direction+”date=“+Datetime+”;”;
SharedReferences pref=context.getSharedReferences(“myPrefs”,
模式(私人),;
SharedReferences.Editor=pref.edit();
如果(时间戳>=今天戳){
String today=pref.getString(“today”,null);
如果(今天!=null){
StringBuilder str=新的StringBuilder(今天);
str.insert(0,位置+“,”);
编辑器.putString(“今天”,str.toString());
}否则{
编辑器.putString(“今天”,位置);
}
}else if(时间戳>=昨天戳){
String昨天=pref.getString(“昨天”,null);
如果(昨天!=null){
StringBuilder str=新的StringBuilder(昨天);
str.insert(0,位置+“,”);
putString(“昨天”,str.toString());
}否则{
编辑器.putString(“昨天”,位置);
}
}else if(时间戳<昨天戳){
String older=pref.getString(“older”,null);
如果(旧的!=null){
StringBuilder str=新的StringBuilder(旧的);
str.insert(0,位置+“,”);
putString(“Older”,str.toString());
}否则{
编辑器.putString(“旧”,位置);
}
}
commit();
}
这将确保它不会覆盖键,而是在键存在时追加。(这是通过检查特定键的
SharedReferences
是否为空来完成的)


在本例中,我与该方法一起使用。

您在
列表
列表DataChild
中看不到新项?或者在适配器中看不到新项目?@Luksprog我今天在子
下的列表中看不到它(因此我认为这就是适配器(?)。但是,当我在函数
addListData
中记录
listDataChild
时,它似乎被添加到了今天
下的列表中(只有当我第一次打开类
LocHistory
并关闭它时,日志记录才起作用)。我仍然不知道您正在尝试做什么,以及如何测试当前的实现。从
main活动调用该方法