Java 使用HashMap present的值更新Arraylist

Java 使用HashMap present的值更新Arraylist,java,android,arraylist,hashmap,selection,Java,Android,Arraylist,Hashmap,Selection,我有一个ArrayList类型,有字段id、name、isSelected,我有一个HashMap,它只能存储选定的项目,这意味着如果单击该项目,它将存储在HashMap,Integer将是id,Model是可以选择的对象。我想将Arraylist项字段iseleted更新为true,该值出现在hashmap中。我该怎么办?我试过很多种情况,但都不见效 ArrayList<MainInterestModel> mainInterestList; public stati

我有一个
ArrayList
类型,有字段
id、name、isSelected
,我有一个
HashMap
,它只能存储选定的项目,这意味着如果单击该项目,它将存储在
HashMap
,Integer将是id,Model是可以选择的对象。我想将
Arraylist
项字段
iseleted
更新为true,该值出现在
hashmap
中。我该怎么办?我试过很多种情况,但都不见效

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

            }
        }
    }
删除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);
        }

    }
  }
导入java.util.ArrayList; 导入java.util.HashMap; 导入java.util.Iterator; 导入java.util.Map; 导入java.util.Map.Entry; 公共类模型迭代器{ 公共静态void main(字符串arg[]){ ArrayList mainmoldelList=新建ArrayList();
对于(inti=1;我想你必须把那个obj(arraylist的obj)再进来hashmap@Rohit,当我第一次单击项目时,项目将被选中,我再次单击该项目将从hashmap中删除。hashmap只接受选定的项目,一切正常,但每当用户希望更新intrest,以便用户可以查看其以前选择的项目时。是否要多选或单选?存储在中hashmap?根据你的for循环,我认为你的hashmap中只有一个选择项……我说的对吗?我觉得你有两个集合,这太复杂了。我以前想过这个,但我没有尝试过,它正在工作。我必须通过声明static来管理列表,这样我才能访问以前的活动,所以我在那里声明了列表。@farhana您不需要这样做。关于IPC和持久存储,您有几个选项,这些选项不需要使
列表成为静态的
。最简单的方法可能是将其作为
意图
额外内容传递。@PPartisanexactly@farhana你必须让它可以序列化,或者parcelable@Rohit我做了这个爸爸可撤销的。
@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();
        }
    });

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

    }
  }