我为HashMap制作了自定义适配器,问题是我无法使用HashMap设置CustomAdapter的TextView。获取HashMap位置的第二行最后一行获取语法错误。 请指导我如何解决语法错误并设置CustomAdapter。
CustomAdapter.java
public class CustomAdapter extends ArrayAdapter<HashMap<String, Object>> {
private SparseBooleanArray mSelectedItemsIds;
private LayoutInflater inflater;
private Context mContext;
private List<HashMap<String, Object>> list;
Blocklist blocklist;
public CustomAdapter (Context context, int resourceId, List<HashMap<String, Object>> list) {
super(context, resourceId, list);
mSelectedItemsIds = new SparseBooleanArray();
mContext = context;
inflater = LayoutInflater.from(mContext);
this.list = list;
}
private static class ViewHolder {
TextView itemName;
}
public View getView(int position, View view, ViewGroup parent) {
final ViewHolder holder;
if (view == null) {
holder = new ViewHolder();
view = inflater.inflate(R.layout.custom_textview, null);
view = inflater.inflate(R.layout.custom_textview, null);
holder.itemName = (TextView) view.findViewById(R.id.custom_tv);
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
holder.itemName.setText(list.get(position));
return view;
}
Blocklist.java
HashMap<String,Object> hm = new HashMap<String,Object>();
hm.put(ID, cursor.getLong(0));
hm.put(ORIGINATING_ADDRESS, cursor.getString(1));
hm.put(MESSAGE_BODY, cursor.getString(2));
arrayList.add(hm);
cursor.moveToNext();
答案 0 :(得分:2)
你有:
list.get(position)
上述行无效,因为 holder.itemName.setText((String)list.get(position).get(MESSAGE_BODY));
会导致Hashmap对象而不是字符串对象。如果你想要示例来显示MESSAGE_BODY,你必须像这样使用它
view = inflater.inflate(R.layout.custom_textview, null);
你也不需要膨胀
Fetch<CommonCalendarEvent, CommonCalendarEventPart> evf
twice`
答案 1 :(得分:0)
list.get(position)
返回HashMap
中的对象position
,而不是String