通过3种不同的活动访问相同的数据

时间:2014-12-16 18:45:31

标签: java android android-listview

我是Android开发的新手,但我尽我所能。

我想创建一个应用程序,为2支队伍打一场纸牌游戏:

活动1:进行出价 活动2:评估游戏结果
活动3:显示一个包含团队得分的列表(2列)
从Activity1开始,直到有人赢了。

所以我有activity1将数据传递给activity2(使用带有意图的putExtra) Activity2评估了出价并计算了Team1和Team2的得分。 该数据正在传递给activity3。

在这里,我想展示一个包含每轮分数的列表。

但是当我再次转到activity1时,我在哪里/如何保存该列表数据?

我已经在玩一个新类,它应该扩展应用程序,但我不知道如何实例化该类以及如何使它可以从每个活动中访问?

这是我的manifest.xml => extradata作为一个新类:

<application
    android:allowBackup="true"
    android:icon="@drawable/notrump"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"
    android:name="extradata">
    <activity

这个类的设置如下:

public class extradata extends Application{

public static ArrayList<scoredata> scoring = new ArrayList<scoredata>();

@Override
public void onCreate()
{
    super.onCreate();
}

scoredata类看起来像这样:

public class scoredata {

private int mScoreteam1;
private int mScoreteam2;
private String mBidteam1;
private String mBidteam2;


public scoredata(int pScoreteam1, int pScoreteam2, String pBidteam1, String pBidteam2){
    mScoreteam1 = pScoreteam1;
    mScoreteam2 = pScoreteam2;
    mBidteam1 = pBidteam1;
    mBidteam2 = pBidteam2;
}

public int getScoreteam1(){
    return mScoreteam1;
}

public int getScoreteam2(){
    return mScoreteam2;
}

public String getBidteam1(){
    return mBidteam1;
}

public String getBidteam2(){
    return mBidteam2;
}

public void setScoreteam1(int pScoreteam1){
    mScoreteam1 = pScoreteam1;
}

public void setScoreteam2(int pScoreteam2){
    mScoreteam2 = pScoreteam2;
}

public void setBidteam1(String pBidteam1){
    mBidteam1 = pBidteam1;
}

public void setBidteam2(String pBidteam2){
    mBidteam2 = pBidteam2;
}

所以我现在有一个应用程序启动时创建的scoredata的arraylist? 如果是这样,我如何访问字段或从我的活动中添加项目?

2 个答案:

答案 0 :(得分:0)

您可能希望将类实现为数据存储区,并使其成为单例,以便您的3个活动中的每个活动都可以访问数据并对其进行修改。 我不知道它是否是解决问题的最佳方案,但它很简单。

答案 1 :(得分:0)

如果您只想将新添加的值从activity2传递给activity1,则可以使用意图。 使用startactivityforesult(intent,requestcode)调用第二个活动。获取新值后,使用setresult()从活动2传递结果。

use this link

在activity1中的onActivityResult()函数中更新你的arraylist(即添加新项)。 使用adapter.setnotifychanged使更新反映在listview中。