【发布时间】:2021-12-15 10:18:57
【问题描述】:
我有一个名为 ListOfPetsActivity.java 的活动,它正在显示 Pet 对象的 ListView。
Pet.java 看起来像这样
public class Pet {
private int petId;
private String petName;
private int age;
//getters, setters and constructors
}
我正在使用自定义适配器在 ListView 中显示宠物对象,该适配器当前仅显示宠物的名称并有一个名为 requestAcceptButton 的按钮。
这是适配器
public class RequesterAdapter extends ArrayAdapter<Pet> {
private List<Pet> requestersList;
private Context context;
public RequesterAdapter(Context context, List<Pet> requestersList) {
super(context, -1, requestersList);
this.context = context;
this.requestersList = requestersList;
}
@NonNull
@Override
public View getView(int position, @Nullable View currentItemView, @NonNull ViewGroup parent) {
if (currentItemView == null) {
currentItemView = LayoutInflater.from(getContext()).inflate(R.layout.requester_item, parent, false);
}
// get the position of the view from the ArrayAdapter
Pet currentPetPosition = getItem(position);
TextView requesterNameTextView = currentItemView.findViewById(R.id.requesterNameTextView);
requesterNameTextView.setText(currentPetPosition.getPetName() + ", " +currentPetPosition.getAge());
Button requestAcceptButton = currentItemView.findViewById(R.id.requestAcceptButton);
return currentItemView;
}
}
现在,显示所有宠物的 ListView 的当前活动,ListOfPetsActivity.java 显示宠物列表及其名称和年龄,并且旁边有一个按钮。
当我单击它时,我想从该 ListView 项中获取 pet 对象的所有值并将其保存在 string 和 int 类型的变量中,以便我可以与数据库进行通信。问题是,我需要在这个活动中而不是在适配器中这样做。那么,我怎样才能从 ListView 项目中获取所有项目呢?
我在ListOfPetsActivity 中像这样设置 ListView 及其适配器。
RequesterAdapter requesterAdapter = new RequesterAdapter(ListOfPetsActivity.this, friendRequesterPetsList);
requesterListView.setAdapter(requesterAdapter);
【问题讨论】:
-
private List<Pet> requestersList;公开。使用requestAdapter.requestList获取宠物列表。或者更简单:只需使用friendRequesterPetsList。