我有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;
}
}
那我该怎么做才能将所有选中的项目/项目中的那些名称保存到array或arraylist中?
答案 0 :(得分:0)
您可以做类似的事情
List<NewGamePlayerItem> checkedItems = new ArrayList<>();
for(NewGamePlayerItem item : mPlayerList)
{
if(item.getCheckBox())
{
checkedItems.add(item);
}
}
这将遍历列表mPlayerList中的所有NewGamePlayerItem
并检查是否已选中该复选框,如果已选中,则将其添加到名为checkedItems
的ArrayList中。现在checkedItems
包含所有选定项目的列表。
您还可以从该列表中获取名称。
或者,如果您只需要名称,那将是
List<String> checkedNames = new ArrayList<>();
for(NewGamePlayerItem item : mPlayerList)
{
if(item.getChecked())
{
checkedNames.add(item.getmText());
}
}