簡體   English   中英

Android:將數據從一個活動傳遞到ListView中的另一個活動

[英]Android: Passing data from one activity to another activity in ListView

我正在制作雜貨清單應用程序。

在我的第一個Activity我有一個ListView ,在我的第二個活動中,我可以添加新的雜貨店詳細信息。 我想在第一個ActivityListView顯示這些詳細信息。 現在如何將數據從第二個Activity傳遞到ListView的第一個Activity

在第二個活動中,我使用愚弄的代碼傳遞了數據:

            EditText editName = (EditText) findViewById(R.id.txtName);
             EditText editQty=(EditText) findViewById(R.id.txtqty);
             String name= editName.getText().toString();
             String quantity=editQty.getText().toString();
             Intent returnIntent = new Intent();
             returnIntent.putExtra("name",name);
             returnIntent.putExtra("quantity",quantity);
             setResult(RESULT_OK,returnIntent);
             finish();

在第一個活動中,我使用了以下Intent:

           protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        if (requestCode == 1) {
            if(resultCode == RESULT_OK){
                Bundle b = data.getExtras();
                if ( b!= null ){
                String strName=data.getStringExtra("name");
                String strQty=data.getStringExtra("quantity");
                System.out.println(strName);
                System.out.println(strQty);

                }
            }
            if (resultCode == RESULT_CANCELED) {
                //Write your code if there's no result
            }
        }

請幫我解決這個問題。 提前致謝。

我建議您使用SQLite來解決問題,當您插入新的雜貨店詳細信息時,只需創建一個表並將該詳細信息插入數據庫表即可。 現在,當您要顯示新添加的詳細信息時,只需運行“選擇”查詢並設置ListView適配器。

如果每次都不希望設置適配器,則只需維護一個布爾靜態變量,例如isGroceryAdded。 如果成功添加了雜貨店詳細信息,則在那時將該布爾變量設為“ true”。 並在第一個活動中檢查該變量為true,然后再次運行查詢並再次設置適配器,在設置適配器之后,只需再次將該變量設置為false。

沒有任何代碼,我的建議是創建一個實現可序列化的模型類,將其放入意圖中,然后將其傳遞回第一個Activity(請注意,要使其正常工作,第二個活動必須以startActivityForResult開始())。

對於類似的問題,請查看https://stackoverflow.com/a/14333555/1082942

這是在大多數情況下都應使用的一種解決方案的概述。 考慮到您沒有提供特定於您情況的代碼,這可能是您可能需要的,也可能不是。

1)要恢復第一個活動,請從第二個活動向包含雜貨店詳細信息的第一個活動發送一個意圖,作為意圖附加(鍵值對)。

2)覆蓋第一個活動的onResume()方法,以處理傳入的意圖,以提取所需的數據。

3)然后,您需要使用此附加信息來更新適配器使用的數據。

4)然后您需要在適配器上調用notifyDataSetChanged(),以便它將使用更新的信息重新創建其視圖。

希望對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM