如何在不返回size = 0的情况下获取ArrayList的值?

时间:2015-07-16 00:27:58

标签: java android arraylist

当我得到arraylist的值时,我得到size = 0.我在Class Screen1中启动了ArrayList,但是我无法获得Class Screen2 cont的值。

public class Variables {

public Variables() {
}

private int cont = 0;
private int correct = 0;


public int getCont(){
    return cont;
}
public void setCont(int cont){
    this.cont = cont;
}

public int getCorrect(){
    return correct;
}
public void setCorrect(int correct){
    this.correct = correct;
}}

Class Screen1

public class Screen1 extends ActionBarActivity {


Variables variables = new Variables();
ArrayList<Variables> variablesArrayList = new ArrayList<Variables>();
public int cont;




@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_screen1);


    variables.setCorrect(1);
    variables.setCont(1);
    variablesArrayList.add(variables);

}


public void sendTela1(View view){
    cont = variables.getCont();

    cont++;

    variablesArrayList.get(0).setCont(cont);

    }

}

课程屏幕2

这个类我试图获取ArrayList的值

public class Screen2 extends ActionBarActivity {

Variables variables = new Variables();
ArrayList<Variables> variablesArrayList = new ArrayList<Variables>();
int cont;
ImageView progressbar;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_screen2);


    progressbar = (ImageView) findViewById(R.id.progressbar);

    //this line, the arraylist is returning size = 0
    cont = variablesArrayList.get(1);


    switch (cont){
        case 1:
            progressbar.setImageResource(R.drawable.progressbar1);
            break;

        case 2:
            progressbar.setImageResource(R.drawable.progressbar2);
            break;
        case 3:
            progressbar.setImageResource(R.drawable.progressbar3);
            break;
        case 4:
            progressbar.setImageResource(R.drawable.progressbar4);
            break;
        case 5:
            progressbar.setImageResource(R.drawable.progressbar5);
            break;
    }}

2 个答案:

答案 0 :(得分:2)

您的返回尺寸为0,因为在执行screen2活动时您正在创建新列表:ArrayList<Variables> variablesArrayList = new ArrayList<Variables>();

要解决此问题,您需要将在screen1中创建的arraylist传递给screen2。您必须实施parcelable,但这样您才能使用intentsbundles传递数据。

答案 1 :(得分:-1)

如果您使用行

在屏幕2中创建新对象
ArrayList<Variables> variablesArrayList = new ArrayList<Variables>();

你当然会收到一个空的arrayList。有多种方法可以将数据从一个Activity发送到另一个Activity。 我建议您查看bundle并使用putExtras和更高版本的getExtras通过Intents。但是,既然你有一个模型类,为什么不使用它呢?

在你的模型类中添加

private static ArrayList<Variables> variablesArrayList;

现在添加一些setter和getter来更新和检索列表

// getter
public static ArrayList<Variables> getList() {
   return variablesArrayList;
}

// setter
public static void setList(ArrayList<Variables> varArryList) {
   this.variablesArrayList = varArryList;
}

现在在screen1上设置你的arrayList,并在screen2(或3,或4,或5,等)中检索它!干杯!