安卓列表<>保存与上一个对象相等的新对象



所以我正在尝试将自定义对象(成员(添加到

final List<Member[]> membersAdded = new ArrayList<>();

通过调用此方法

public void AddMember(Member member) {
member.setAmountInShare(bcAmount);
Member[] x = new Member[]{member};
membersAdded.add(x);
membersAddedCounter++;
addAdapter.notifyDataSetChanged();
if(membersAdded.get(0)[0] == membersAdded.get(membersAdded.size()-1)[0]){
Log.d("Test", "same "+(membersAdded.size()-1));
}
if (membersAdded.size() > 0) hintTextView.setVisibility(View.GONE);
else hintTextView.setVisibility(View.VISIBLE);
}

该列表包含对象(Member(的数组,因此我可以在需要时在数组中添加更多对象。让我们有5个对象,

Member member1 = new Member();
Member member2 = new Member();
Member member3 = new Member();
Member member4 = new Member();
Member member5 = new Member();

当我添加呼叫时

AddMember(member1)

日志返回相同,因为它们是,但当我进行时

AddMember(member1)
AddMember(member2)
AddMember(member3)
AddMember(member4)
AddMember(member5)
AddMember(member1)

日志返回首次运行时相同的最后一次跑步相同

这里怎么了?

我通过从另一个列表中选择行项目来添加行

holder.cardView.setOnClickListener(v -> {
Member x = memberList.get(position);
x.setPositionInBc(counter);
counter++;
bcAddMembersFragment.AddMember(x);
Toast.makeText(bcAddMembersFragment.getContext(), "Member Added", 
Toast.LENGTH_SHORT).show();
});

出于某种原因(Member x(引用了第二个列表中的对象,所以我为Member对象和vollah创建了一个新的构造函数。

我解决问题的方法是

holder.cardView.setOnClickListener(v -> {
Member x = memberList.get(position);
Member tempMember = new Member(x.getId(), x.getName(), x.getContactNumber(), 
x.getStatus().toString());
tempMember.setPositionInBc(counter);
counter++;
bcAddMembersFragment.AddMember(tempMember);
Toast.makeText(bcAddMembersFragment.getContext(), "Member Added", 
Toast.LENGTH_SHORT).show();
});

最新更新