将所有复选框(已选中)项收集到Array或ArrayList中

时间:2019-07-18 10:52:31

标签: java

我有ActivityNewGame,其中有一个ArrayList(mPlayerList),其项目类型为NewGamePlayerItem。每个NewGamePlayerItem实例都包含一个选中的布尔标志和播放器的名称。我必须收集ArrayArrayList中的所有选中的名称,以供以后使用。

在以下方法中,您可以查看播放器列表的构建方式以及获取项目的方式。 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中?

1 个答案:

答案 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());
    }
}