我有RecyclerView
包含CheckBox
,检查时应接受getAdapterPosition()
的{{1}}并检查RecyclerAdapter
的状态(布尔值)作为关键字,选中CheckBox
CheckBox`中的值会产生以下错误。
错误:
hashmap'.getAdapterPosition() is converted to Integer object.When the
TourPlacesRecyclerAdapter.java :(不包括完整的java类)
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.util.Map$Entry
at com.example.jobinsabu.destination.TourPlacesRecyclerAdapter$RecyclerHolder$1.onChange(TourPlacesRecyclerAdapter.java:89)
at com.github.lguipeng.library.animcheckbox.AnimCheckBox.setChecked(AnimCheckBox.java:291)
at com.github.lguipeng.library.animcheckbox.AnimCheckBox.setChecked(AnimCheckBox.java:264)
at com.github.lguipeng.library.animcheckbox.AnimCheckBox$1.onClick(AnimCheckBox.java:74)
at android.view.View.performClick(View.java:5198)
at android.view.View$PerformClick.run(View.java:21147)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
答案 0 :(得分:1)
您正在迭代遍历hashmap的键集:
Set s=hashMap.keySet();
Iterator i=s.iterator();
while (i.hasNext()){
Map.Entry entry=(Map.Entry)i.next();
Log.e("Position"+entry.getKey().toString(),"Status"+entry.getValue().toString());
}
密钥集仅包含Integer
s(因为hashmap的密钥是)。当然,Integer
不是来自Map.Entry
因此ClassCastException
。
你应该得到你的hashmap的入口集并像这样迭代
Set<Map.Entry<Integer, Boolean>> s = map.entrySet();
Iterator<Map.Entry<Integer, Boolean>> i = s.iterator();
while (i.hasNext()) {
Map.Entry<Integer, Boolean> entry = (Map.Entry<Integer, Boolean>) i.next();
}
答案 1 :(得分:1)
你有:
Set s=hashMap.keySet();
你可能想要获得输入集:
Set s=hashMap.entrySet();
如果您使用泛型,编译器会为您检测到此问题。
答案 2 :(得分:1)
您应该使用hashMap.entrySet()
代替hashMap.keySet()