用存在的 HashMap 的值更新 Arraylist

Update Arraylist with the value of HashMap present

我有一个 ArrayList<Model> 类型和字段 id,name,isSelected 我有一个 HashMap 只能存储选定的项目意味着如果单击该项目它将存储在 HashMap<Intere,Model>, Integer 就是 id , Model 就是那个可以被选中的对象。我想将 Arraylist 项字段 isSeleted 更新为 hashmap 中存在的 true。我能怎么做?我尝试了很多条件,但没有任何效果。

   ArrayList<MainInterestModel> mainInterestList;
    public static HashMap<Integer, MainInterestModel> mainIntrestHash = new HashMap<>();

    Iterator myVeryOwnIterator = mainIntrestHash.keySet().iterator();
    while (myVeryOwnIterator.hasNext()) {
        int key = (int) myVeryOwnIterator.next();
        MainInterestModel value = (MainInterestModel) mainIntrestHash.get(key);

        int id = value.getId();
        for (int i = 0; i < mainInterestList.size(); i++) {

            MainInterestModel model = mainInterestList.get(i);
            if (model.getId() == id) {

                model.setSelected(true);
                mainInterestList.set(i, model);

            } else {
                model.setSelected(false);
                mainInterestList.set(i, model);

            }
        }
    }

默认情况下 isSelected 为 false,但当用户单击该项目时,该项目稍后将存储在 HashMap 中,我想更新选择以便用户界面显示所选项目。 HashMap 已选择项目,arraylist 已选择所有项目但 isSelected 为 false。在显示所选项目时,我正在考虑 isSelected 是否正确,工作正常,但 arraylist 更新无效。

我的适配器class代码

   @Override
public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) {
    final MainInterestModel mainInterestModel = mainInterestModels.get(position);
    holder.tvName.setText(mainInterestModel.getName());
    holder.ivMainInterest.setImageResource(mainInterestModel.getImage());

    // here isSelected is always false because in activity infalting adpter with arraylist, i want to setSeletced by hash object
    boolean isSelected = mainInterestModel.isSelected();
    if (isSelected) {

        holder.ivMainInterest.setImageResource(R.drawable.bath_selector);

        Log.e("Is Item selected ::", "" + mainInterestModel.getId());

    } else {

        holder.ivMainInterest.setImageResource(R.drawable.ic_bath);

        Log.e("Is Item deselected ::", "" + mainInterestModel.getId());


    }
    holder.ivMainInterest.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            boolean selection = mainInterestModel.isSelected();
            if (selection) {

                holder.ivMainInterest.setImageResource(R.drawable.ic_bath);
                mainInterestModel.setSelected(false);
                mainIntrestHash.remove(mainInterestModel.getId());

                Log.e("After Remove SIZE:---", "" + mainIntrestHash.size());

            } else {

                mainInterestModel.setSelected(true);
                holder.ivMainInterest.setImageResource(R.drawable.bath_selector);
                mainIntrestHash.put(mainInterestModel.getId(), mainInterestModel);


                Log.e("After Adding SIZE:---", "" + mainIntrestHash.size());
            }

        }
    });

}
@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) {
    holder.ivMainInterest.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            boolean selection = mainInterestModel.isSelected();
            if (selection) {
                holder.ivMainInterest.setImageResource(R.drawable.ic_bath);
                mainInterestModel.setSelected(false);

            } else {
                mainInterestModel.setSelected(true);
                holder.ivMainInterest.setImageResource(R.drawable.bath_selector);

            }
            notifyDataSetChanged();
        }
    });

}

删除 hashmap 并尝试使用它。

use  this 

    import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

public class ModelIterator {

    public static void main(String arg[]) {
        ArrayList<mainModel> mainmoldelList = new ArrayList<mainModel>();

        for (int i = 1; i <= 3; i++) {
            mainModel m = new mainModel();
            m.setId(i);
            m.setName("Rajendra" + i);
            m.setSelected(false);
            mainmoldelList.add(m);
        }

        mainModel m = new mainModel();

        m.setId(0);
        m.setName("Rajendra0");
        m.setSelected(false);

        HashMap<Integer, mainModel> mMap = new HashMap<Integer, mainModel>();
        mMap.put(1, m);

        Iterator<Entry<Integer, mainModel>> ite = mMap.entrySet().iterator();

        while (ite.hasNext()) {
            Map.Entry<Integer, mainModel> pair = (Map.Entry<Integer, mainModel>) ite
                    .next();

            int key = pair.getKey();

            mainModel mObj = (mainModel) mMap.get(key);

            for (int i = 0; i < mainmoldelList.size(); i++) {

                if (mainmoldelList.get(i).id == key) {

                    mainModel tmp = new mainModel();

                    tmp.setId(mainmoldelList.get(i).id);
                    tmp.setName(mainmoldelList.get(i).name);
                    tmp.setSelected(true);
                    mainmoldelList.add(tmp);
                    mainmoldelList.remove(i);

                }

            }

        }

        for (int i = 0; i < mainmoldelList.size(); i++) {
            System.out.println(mainmoldelList.get(i).id + " "
                    + mainmoldelList.get(i).name + " "
                    + mainmoldelList.get(i).isSelected);
        }

    }
  }