簡體   English   中英

Android刪除並在活動之間添加到ArrayList

[英]Android remove and add to ArrayList in between activities

我正在制作我的第一個Android應用程序,而這里是我被困的地方。 我有一個活動A,需要挑選4名玩家。 我傳遞給活動PickPlayer 1234 ,根據我想補哪名球員。

ImageButton addp1 = (ImageButton)findViewById(R.id.player1);
addp1.setOnClickListener(new View.OnClickListener()
{
    @Override
    public void onClick(View v)
    {
        Intent i = new Intent(getApplicationContext(), PickPlayer.class);
        i.putExtra("playersList", playersList);
        startActivityForResult(i, 1);
    }
});

PickPlayer活動中,我有一個填充的列表,每個項目都收到一個監聽器。

    final ArrayList<Player> playersList = (ArrayList<Player>)getIntent().getSerializableExtra("playersList");
    lv.setAdapter(new PlayerItemAdapter(this, android.R.layout.simple_list_item_1, playersList));
    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapter, View view, int position, long arg) {
            player = playersList.get(position);
            playersList.remove(position);
            Intent intentMessage = new Intent();
            intentMessage.putExtra("player", player);
            intentMessage.putExtra("playersList", playersList);
            setResult(RESULT_OK, intentMessage);
            finish();
        }
    });`

通過在活動A上創建playersList並且每次將其從一個傳遞到另一個並且在點擊時從玩家列表中移除玩家,上述工作正常。 問題是如果錯誤地選擇了一個玩家,一旦被其他人替換,他需要再次被放回到列表中。

關於實施這個的任何建議? 我想到的一種方法是從活動A傳遞到PickPlayer玩家(如果已經在他的位置分配了一個玩家)並再次將他讀playerList ,但我確信有更好的方法。 我是android的新手,所以我不知道資源和最佳實踐。 (示例通過活動或id傳遞對象並運行db查詢)。

謝謝

IMO,你將使用單例類(或者在Application實例上的方法 - 這里有一個很好的stackoverflow問題)來獲得最佳結果。

你的數組將是單例的內部成員,並有一個布爾屬性來指示玩家是否已經被選中。 使用此屬性的一些方法可以實現為:

  • List<Player> getPickedPlayers()
  • List<Player> getNotPickedPlayers()
  • void setPlayerPicked(Player player)
  • void setPlayerNotPicked(Player player)
  • 等等...

希望能幫助到你!

當您通過Intent的包( i.putExtra("playersList", playersList); )發送對象時,它會被編組,然后在另一側(新活動)進行解組。 這意味着您有2個ArrayList實例及其內容(每個活動中有一個)。 如果您希望在活動A和活動B之間共享數據,我建議您將其存儲在Application實例上或使用單例。

如果您的數據來自數據庫,您可以通過意圖傳遞id,並通過數據庫查詢獲取玩家列表和特殊玩家。

不確定這是否是實現這一目標的最佳方式,但我將與您分享。

我在活動之間來回移動arrayList和玩家。 一旦玩家被送回,它就會從中移除並保存在對象player1player2player3等中。

因此,如果用戶單擊已經分配給它的播放器的按鈕,我只需將該播放器再次添加到列表中並傳遞arrayList ,如果它是空的那樣。

暫無
暫無

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

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