所以我正在尝试将自定义对象(成员(添加到
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();
});