繁体   English   中英

将数据从RecyclerView适配器传递到另一个活动

[英]Pass data from RecyclerView Adaptor to another activity

我创建了一个RecyclerView,其中使用复选框填充了用户的联系人。 当用户单击复选框时,我想将该联系人添加到对象。 现在,我已经能够做到这一点,但是在将对象从适配器发送到另一个活动时遇到了问题:

@Override
public void onBindViewHolder(ViewHolder holder,  final int position){

  //  final PlayerDetails thePlayer = playerData.get(position);
  // ArrayList<PlayerDetails> thePlayer = playerData;
    //holder.playerNameNumber.setText(thePlayer.name + " " + thePlayer.number);
    holder.playerNameNumber.setText(playerData.get(position).name +playerData.get(position).number );

    holder.pickedPlayer.setOnClickListener(new View.OnClickListener(){

        @Override
        public void onClick(View thisView){
            PlayerDetails contact = new PlayerDetails();
            contact.number = playerData.get(position).name;
            contact.name = playerData.get(position).number;
            playerListGame.addPlayer(contact);
            String name = playerData.get(position).name;
            Toast.makeText(thisView.getContext(),name + " added",Toast.LENGTH_LONG).show();
        }

    });


}

当我调试上面的内容时,我可以看到playerListGame包含我要添加到其中的数据。

现在,我尝试执行以下操作:

public PlayerList donePickingSendPlayers(){
   return playerListGame;
}

在我的适配器底部。 但是,当我调试时,它表明它的值为0。(我确实在一开始就对其进行了初始化。

如何将playerListGame发送到另一个活动?

我已经设置了一个浮动按钮,onClick会执行以下操作:

private void donePicking(){
    ContactPickerRecyclerViewAdapter justToGetPlayerData = new ContactPickerRecyclerViewAdapter();
    justToGetPlayerData.donePickingSendPlayers();
    Intent backToComposeMessage = new Intent(this,ComposeMessage.class);
    startActivity(backToComposeMessage);
}

但这似乎不起作用,因为“ donePickingPlayers”中的playerListGame为空。

在您的适配器中编写一个带有方法donePicking(PlayerDetails contact)的接口,并在您的活动中实现该方法,并在您的活动中覆盖方法,您将在重写的方法中获得PlayerDetails对象,并将其传递给下一个活动。

使用在适配器内部创建的方法来获取数据时,请使用与在recyclerview中设置的适配器相同的对象。

private void donePicking(){
ContactPickerRecyclerViewAdapter justToGetPlayerData = new 
      ContactPickerRecyclerViewAdapter();
justToGetPlayerData.donePickingSendPlayers();
Intent backToComposeMessage = new Intent(this,ComposeMessage.class);
startActivity(backToComposeMessage);

}

在此方法中,您正在创建适配器类的另一个实例,该实例始终为您提供空数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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