无法在 CustomAdapter 中获取 HashMap 位置
can't able to get HashMap position in CustomAdapter
我为 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();
你有:
holder.itemName.setText(list.get(position));
以上行将不起作用,因为 list.get(position)
结果是 Hashmap 对象而不是字符串对象。如果你想要示例显示 MESSAGE_BODY 你必须像这样使用它
holder.itemName.setText((String)list.get(position).get(MESSAGE_BODY));
你也不需要充气
view = inflater.inflate(R.layout.custom_textview, null);
两次`
list.get(position)
Return position
中的对象 HashMap
,不是 String
我为 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();
你有:
holder.itemName.setText(list.get(position));
以上行将不起作用,因为 list.get(position)
结果是 Hashmap 对象而不是字符串对象。如果你想要示例显示 MESSAGE_BODY 你必须像这样使用它
holder.itemName.setText((String)list.get(position).get(MESSAGE_BODY));
你也不需要充气
view = inflater.inflate(R.layout.custom_textview, null);
两次`
list.get(position)
Return position
中的对象 HashMap
,不是 String