【问题标题】:Collecting all checkbox (checked) items into Array or ArrayList将所有复选框(选中)项目收集到 Array 或 ArrayList
【发布时间】:2019-07-21 22:03:23
【问题描述】:

我有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;
    }
}

那么我该怎么做才能将所有选中的项目/项目中的那些名称保存到数组或数组列表中?

【问题讨论】:

  • 你自己试过了吗?
  • 嗯,我目前在想我能不能通过以下方式做到这一点: public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { /** 设置对象的最后状态 **/ currentItem.setSelected(isChecked) ; } 比如 if ->its checked add to the arraylist,或者什么
  • 创建一个新的 Arraylist 用于存储选中的 Iterms 的名称,遍历 mPlayerList 数组列表,检查该位置的 NewGamePlayerItem 是否将 mCheckBox 设置为 true,然后将其添加到创建的新数组列表中。

标签: java


【解决方案1】:

你可以做类似的事情

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-05
    • 2018-08-24
    • 2018-04-23
    • 2014-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多