Java 当我将Arraylist从main.activity传递到receiver.activity时,只获取Arraylist的最后一个值

Java 当我将Arraylist从main.activity传递到receiver.activity时,只获取Arraylist的最后一个值,java,android,Java,Android,我有两个班,主要活动和接受者活动。在主活动中,我从edittext填充arraylist,在按钮上单击我想在receiver.class上传递此arraylist,但它只获取arraylist的最后一个值。我的代码是这个主活动 public class main extends AppCompatActivity { EditText txt; Button check,save; String ts ="new "; public List<Strin

我有两个班,主要活动和接受者活动。在主活动中,我从edittext填充arraylist,在按钮上单击我想在receiver.class上传递此arraylist,但它只获取arraylist的最后一个值。我的代码是这个主活动

 public class main extends AppCompatActivity {
     EditText txt;
     Button check,save;
     String ts ="new ";


public List<String> name;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    txt= (EditText) findViewById(R.id.editText);
    check = (Button) findViewById(R.id.btn_conf);
    save = (Button) findViewById(R.id.btn_sve);

    check.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
       //   tmp.name.add(txt.getText().toString());
            name = new ArrayList<String>();
            name.add(txt.getText().toString());

        }
    });

    save.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(main.this, reciever.class);
            Bundle args = new Bundle();
            args.putSerializable("ARRAYLIST",(Serializable)name);
            intent.putExtra("BUNDLE",args);
            startActivity(intent);
        }
    });
}
public类主活动{
编辑文本文本;
按钮检查,保存;
字符串ts=“新建”;
公开名单名称;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txt=(EditText)findViewById(R.id.EditText);
检查=(按钮)findViewById(R.id.btn_conf);
保存=(按钮)findviewbyd(R.id.btn_sve);
check.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//tmp.name.add(txt.getText().toString());
name=新的ArrayList();
name.add(txt.getText().toString());
}
});
save.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
意向意向=新意向(main.this,receiver.class);
Bundle args=新Bundle();
args.putSerializable(“ARRAYLIST”,(Serializable)名称);
意向。额外(“捆绑”,args);
星触觉(意向);
}
});
}
} `

还有一个接受者

public class reciever extends AppCompatActivity {
Button rec;
String tmp="";
ArrayList<String> object;
int i=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_reciever);
    Intent intent = getIntent();


    Bundle args = intent.getBundleExtra("BUNDLE");
    object = (ArrayList<String>) args.getSerializable("ARRAYLIST");


    rec = (Button) findViewById(R.id.btnrec);
    rec.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            for (i=0;i<object.size();i++)
            {
                tmp+=object.get(i);
            }
            Toast.makeText(getApplicationContext(),tmp, Toast.LENGTH_LONG).show();
        }
    });

}
公共类接收器扩展AppCompative活动{
按钮rec;
字符串tmp=“”;
ArrayList对象;
int i=0;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_receiver);
Intent=getIntent();
Bundle args=intent.getBundleExtra(“Bundle”);
object=(ArrayList)args.getSerializable(“ArrayList”);
rec=(按钮)findViewById(R.id.btnrec);
rec.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){

对于(i=0;i当您在创建新的
ArrayList时,只要单击
检查
按钮,问题就出现在您的
ClickListener

您需要在
之外创建
数组列表
单击侦听器
,如下面的代码所示

试试这个

 name = new ArrayList<String>();
check.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
       //   tmp.name.add(txt.getText().toString());

            name.add(txt.getText().toString());

        }
    });
name=newarraylist();
check.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//tmp.name.add(txt.getText().toString());
name.add(txt.getText().toString());
}
});
像这样更改代码

public class main extends AppCompatActivity {
     EditText txt;
     Button check,save;
     String ts ="new ";


public List<String> name ;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    txt= (EditText) findViewById(R.id.editText);
    check = (Button) findViewById(R.id.btn_conf);
    save = (Button) findViewById(R.id.btn_sve);
    name = new ArrayList<String>();

    check.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
       //   tmp.name.add(txt.getText().toString());

            name.add(txt.getText().toString());

        }
    });

    save.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(main.this, reciever.class);
            Bundle args = new Bundle();
            args.putSerializable("ARRAYLIST",(Serializable)name);
            intent.putExtra("BUNDLE",args);
            startActivity(intent);
        }
    });
}

}
public类主活动{
编辑文本文本;
按钮检查,保存;
字符串ts=“新建”;
公开名单名称;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txt=(EditText)findViewById(R.id.EditText);
检查=(按钮)findViewById(R.id.btn_conf);
保存=(按钮)findviewbyd(R.id.btn_sve);
name=新的ArrayList();
check.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//tmp.name.add(txt.getText().toString());
name.add(txt.getText().toString());
}
});
save.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
意向意向=新意向(main.this,receiver.class);
Bundle args=新Bundle();
args.putSerializable(“ARRAYLIST”,(Serializable)名称);
意向。额外(“捆绑”,args);
星触觉(意向);
}
});
}
}

当您在创建新的
阵列列表时,只要单击
检查
按钮,问题就出现在您的
ClickListener

您需要在
之外创建
数组列表
单击侦听器
,如下面的代码所示

试试这个

 name = new ArrayList<String>();
check.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
       //   tmp.name.add(txt.getText().toString());

            name.add(txt.getText().toString());

        }
    });
name=newarraylist();
check.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//tmp.name.add(txt.getText().toString());
name.add(txt.getText().toString());
}
});
像这样更改代码

public class main extends AppCompatActivity {
     EditText txt;
     Button check,save;
     String ts ="new ";


public List<String> name ;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    txt= (EditText) findViewById(R.id.editText);
    check = (Button) findViewById(R.id.btn_conf);
    save = (Button) findViewById(R.id.btn_sve);
    name = new ArrayList<String>();

    check.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
       //   tmp.name.add(txt.getText().toString());

            name.add(txt.getText().toString());

        }
    });

    save.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(main.this, reciever.class);
            Bundle args = new Bundle();
            args.putSerializable("ARRAYLIST",(Serializable)name);
            intent.putExtra("BUNDLE",args);
            startActivity(intent);
        }
    });
}

}
public类主活动{
编辑文本文本;
按钮检查,保存;
字符串ts=“新建”;
公开名单名称;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txt=(EditText)findViewById(R.id.EditText);
检查=(按钮)findViewById(R.id.btn_conf);
保存=(按钮)findviewbyd(R.id.btn_sve);
name=新的ArrayList();
check.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//tmp.name.add(txt.getText().toString());
name.add(txt.getText().toString());
}
});
save.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
意向意向=新意向(main.this,receiver.class);
Bundle args=新Bundle();
args.putSerializable(“ARRAYLIST”,(Serializable)名称);
意向。额外(“捆绑”,args);
星触觉(意向);
}
});
}
}

每次创建Arraylist的新对象时。 做下面这样的事情

public class main extends AppCompatActivity {
     EditText txt;
     Button check,save;
     String ts ="new ";


public List<String> name=new ArrayList<>;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    txt= (EditText) findViewById(R.id.editText);
    check = (Button) findViewById(R.id.btn_conf);
    save = (Button) findViewById(R.id.btn_sve);

    check.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
       //   tmp.name.add(txt.getText().toString());

            name.add(txt.getText().toString());

        }
    });

    save.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(main.this, reciever.class);
            Bundle args = new Bundle();
            args.putSerializable("ARRAYLIST",(Serializable)name);
            intent.putExtra("BUNDLE",args);
            startActivity(intent);
        }
    });
}

} `
public类主活动{
编辑文本文本;
按钮检查,保存;
字符串ts=“新建”;
公共列表名称=新的ArrayList;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txt=(EditText)findViewById(R.id.EditText);
检查=(按钮)findViewById(R.id.btn_conf);
保存=(按钮)fi