繁体   English   中英

将 ListView 值传递给另一个 Activity 中的多个 EditText

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM