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