当我从main传递一个Arraylist时。活动到接受者。活动仅获取arraylist的最后一个值
我有两个班,主要活动和接受者活动。在主活动中,我从edittext填充arraylist,并在按钮上单击我想将此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 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();
}
});
}
}
如何传递列表中的所有项目
# 1 楼答案
每次创建Arraylist的新对象时。 做下面这样的事情
# 2 楼答案
每当您单击}创建新的} 中
check
{ArrayList
时,问题就出现在您的{您需要在
ClickListener
外部创建ArrayList
,如下面的代码所示试试这个
像这样更改代码
# 3 楼答案
在每次调用
check
on click listener时,您都会创建一个新的ArrayList
并向其中添加一个元素。由于每次重新创建列表时,它将不会有多个元素只需在监听器外部创建
ArrayList
并将其添加到监听器内部,它就会累积各种条目