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活动调用该方法