这是一个我觉得很奇怪的事情,我想把一个由activity传过来的HashMap的内容放到listView中private ListView mListView=null;//listView
private SimpleAdapter sim_adapter;//简单适配器
private List<Map<String,Object>>dateList;//数据源
HashMap<String,String> freList=null;
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_fre_list,null);
mListView=(ListView) view.findViewById(R.id.listView);
Bundle bundle=getArguments();//可以很确定这个bundle一定是接收到了的,可奇怪就奇怪在这个地方
SerMap serializableMap = (SerMap) bundle.get("freList");
//定义SerMap方法(这是我自己写的一个方法可以吧HashMap serializable化)
freList=serializableMap.getMap();
dateList=new ArrayList<Map<String, Object>>();
dateList=getData();
sim_adapter=new SimpleAdapter(getActivity(),dateList,R.layout.item,new String[]{"friend","newCount"},new int[]{R.id.friend,R.id.newCount});
mListView.setAdapter(sim_adapter);
return view;
}这是定义数据源的getData方法private List<Map<String,Object>> getData(){
int k=freList.size();//得到map的长度
Object[] keys = freList.keySet().toArray();
Object[] values = freList.values().toArray();//键和值都分别转换为数组
/* for (i=0;i<k;i++){
System.out.println("--------"+i+"---------");
System.out.println("--------"+keys[i]+"---------");
System.out.println("--------"+values[i]+"---------");
}*/ // 这是一个注释掉的代码 这里也有一个奇怪的地方--->如果把接下来的for循环注释掉这个循环可以正常输出
而如果把这段注释掉运行接下来的循环就会报数组越界的异常。
for(int i=0;i<k;i++){
Map<String,Object>map=new HashMap<String, Object>();
map.put("friend",keys[i]);
map.put("newCount",values[i]);
dateList.add(map);
}
return dateList;
}然后最主要的奇怪的地方是这里(这段代码如果这么写的话):public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_fre_list,null);
mListView=(ListView) view.findViewById(R.id.listView);
Bundle bundle=getArguments();//可以很确定这个bundle一定是接收到了的,可奇怪就奇怪在这个地方
if(bundle!=null){//把上边的那段代码放在这个if语句中
SerMap serializableMap = (SerMap) bundle.get("freList");
freList=serializableMap.getMap();
dateList=new ArrayList<Map<String, Object>>();
dateList=getData();
sim_adapter=new SimpleAdapter(getActivity(),dateList,R.layout.item,new String[]{"friend","newCount"},new int[]{R.id.friend,R.id.newCount});
mListView.setAdapter(sim_adapter);
}
return view;
}如果这么写,程序会正常运行也不会报getString方法空指针的错误,可是listView就不会在UI界面显示。可如果像第一种那样写,就会报getString空指针异常.各路大神能否拯救一下我这个萌新?在做一个手机QQ的项目.快到期了,可是被这个问题困扰好几天了.大家能否帮帮我~~感激不尽
目前暂无任何回答
- 0 回答
- 0 关注
- 1491 浏览
添加回答
举报
0/150
提交
取消