[英]How to pass multiple edittext values into a Arraylist and then send it to another activity?
[英]Pass ListView values to multiple EditText in another Activity
我有一个 Activity 有两个可点击的 EditTexts,我试图从两个不同的 ListView 活动传递值。 每次我尝试将值填充到第二个 EditText 时,其他 EditText 的值都会被清除。
我需要帮助来找出我错在哪里以及可能的解决方案。
这是带有两个 EditTexts 的 Activity 的代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.book_seat);
//Departure
depart = (EditText)findViewById(R.id.departure_terminal);
// This is a listener for the one way departure terminal
depart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(BookSeat.this,TerminalList.class);
startActivity(intent);
}
});
// Receiving value into activity using intent.
String TempHolder = getIntent().getStringExtra("ListViewClickedValue");
// Setting up received value into EditText.
depart.setText(TempHolder);
//Arrival
arrive = (EditText)findViewById(R.id.arrival_terminal);
// This is a listener for the one way arrival terminal
arrive.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(BookSeat.this,ArrivalTerminalList.class);
startActivity(intent);
}
});
// Receiving value into activity using intent.
String TempHolder_1 = getIntent().getStringExtra("ArrivalListViewClickedValue");
// Setting up received value into EditText.
arrive.setText(TempHolder_1);
这是第一个 ListView 的代码
public class TerminalList extends AppCompatActivity {
ListView listView;
// Define string array.
String[] listValue = new String[] {"Anambra => Awka","Delta(South-East) => Asaba(Onitsha)","Enugu => Enugu",
"FCT Abuja => Kubwa","Imo => Owerri","Kaduna => Kaduna","Lagos => Cele/Okota","Lagos => Festac(MazaMaza)","Plateau => Jos"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.terminal_list);
listView = (ListView)findViewById(R.id.listView1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, android.R.id.text1, listValue);
listView.setAdapter(adapter);
// ListView on item selected listener.
listView.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
// Getting listview click value into String variable.
String ListViewClickedValue = listValue[position].toString();
Intent intent = new Intent(TerminalList.this, BookSeat.class);
// Sending value to another activity using intent.
intent.putExtra("ListViewClickedValue", ListViewClickedValue);
startActivity(intent);
finish();
}
});
}
}
这是第二个 ListView 的代码
public class ArrivalTerminalList extends AppCompatActivity {
ListView listView;
// Define string array.
String[] listValue = new String[] {"Anambra => Awka","Delta(South-East) => Asaba(Onitsha)","Enugu => Enugu",
"FCT Abuja => Kubwa","Imo => Owerri","Kaduna => Kaduna","Lagos => Cele/Okota","Lagos => Festac(MazaMaza)","Plateau => J-Town"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.arrival_terminal_list);
listView = (ListView)findViewById(R.id.listView2);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, android.R.id.text1, listValue);
listView.setAdapter(adapter);
// ListView on item selected listener.
listView.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
// Getting listview click value into String variable.
String ArrivalListViewClickedValue = listValue[position].toString();
Intent intent = new Intent(ArrivalTerminalList.this, BookSeat.class);
// Sending value to another activity using intent.
intent.putExtra("ArrivalListViewClickedValue", ArrivalListViewClickedValue);
startActivity(intent);
}
});
}
}
当您开始新活动时,不会发送来自当前活动意图的数据。 您可以转发您的数据,也可以开始这些活动以获得结果。 您可以使用startActivityForResult()
开始您的活动并在原始活动中接收结果。 您需要调用startActivity()
而不是调用startActivityForResult()
startActivityForResult(intent, ARRIVAL_REQUEST_CODE); // ARRIVAL_REQUEST_CODE is arbitrary number >= 0
然后在您的到达活动中,返回结果时,您需要设置将返回到BookSeat
活动的结果
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
...
Intent result = new Intent();
result.putExtra("ArrivalListViewClickedValue", ArrivalListViewClickedValue);
setResult(Activity.RESULT_OK, result);
finish();
}
最后要处理结果,您需要覆盖BookSeat
活动中的函数,当您从ArrivalTerminalList
活动收到结果时将调用该函数。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent resultIntent) {
if (requestCode == ARRIVAL_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
String arrivalValue = resultIntent.getStringExtra("ArrivalListViewClickedValue");
arrive.setText(arrivalValue); // You can make 'arrive' instance variable and initialize it in onCreate
}
}
}
您可以对出发活动执行相同的操作。 此解决方案的优点是现在您的后台堆栈不会被填满,因为您无需启动新活动,而只需将结果返回到之前的活动。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.