【发布时间】:2019-07-21 22:03:23
【问题描述】:
我有ActivityNewGame,它有一个ArrayList (mPlayerList) 和NewGamePlayerItem 类型的项目。每个NewGamePlayerItem 实例都包含一个选中的布尔标志和玩家的名字。我必须在Array 或ArrayList 中收集所有选中的名称以供以后使用。
在以下方法中,您可以看到玩家列表是如何构建的,以及它是如何获取其项目的。 False 是选中标志的默认值,getText1() 从其他活动名称列表中返回玩家的名称。
private void insertNames() {
if (ActivityPlayers.mNameList == null) {
mPlayerList = new ArrayList<>();
} else {
mPlayerList = new ArrayList<>();
for (int i = 0; i < ActivityPlayers.mNameList.size(); i++) {
mPlayerList.add(new NewGamePlayerItem(false, ActivityPlayers.mNameList.get(i).getText1()));
}
}
}
这是我的适配器实现:
public void onBindViewHolder(@NonNull final NewGamePlayerViewHolder holder, int position) {
final NewGamePlayerItem currentItem = mNewGamePlayerList.get(position);
/** In some cases, this will prevent unwanted situations **/
holder.mCheckBox.setOnCheckedChangeListener(null);
/** If true, checkbox will be selected, else unselected **/
holder.mCheckBox.setChecked(currentItem.getCheckBox());
holder.mCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
/** set object's last status **/
currentItem.setSelected(isChecked);
}
});
/** Set name **/
holder.mName.setText(currentItem.getmText());
}
这是项目:
public class NewGamePlayerItem {
private boolean mCheckBox;
private String mText;
public NewGamePlayerItem(boolean checkBox, String text) {
mCheckBox = checkBox;
mText = text;
}
public boolean getCheckBox() {
return mCheckBox;
}
public String getmText() {
return mText;
}
public void setSelected(boolean isSelected) {
mCheckBox = isSelected;
}
}
那么我该怎么做才能将所有选中的项目/项目中的那些名称保存到数组或数组列表中?
【问题讨论】:
-
你自己试过了吗?
-
嗯,我目前在想我能不能通过以下方式做到这一点: public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { /** 设置对象的最后状态 **/ currentItem.setSelected(isChecked) ; } 比如 if ->its checked add to the arraylist,或者什么
-
创建一个新的 Arraylist 用于存储选中的 Iterms 的名称,遍历 mPlayerList 数组列表,检查该位置的 NewGamePlayerItem 是否将 mCheckBox 设置为 true,然后将其添加到创建的新数组列表中。
标签: java