Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android GSON进入ListView的速度较慢_Android_Json_Listview_Gson - Fatal编程技术网

Android GSON进入ListView的速度较慢

Android GSON进入ListView的速度较慢,android,json,listview,gson,Android,Json,Listview,Gson,我试图用gson解析json,然后将其设置到listview中,但这需要很长时间,我想询问stackoverflow comunity。也许我做错了什么? 下面是我如何将json放入listview的 HashMap<String, Object> map = new HashMap<String, Object>(); Gson gson = new GsonBuilder().create(); ml = gson.fromJson(gsonString, Main.

我试图用gson解析json,然后将其设置到listview中,但这需要很长时间,我想询问stackoverflow comunity。也许我做错了什么? 下面是我如何将json放入listview的

HashMap<String, Object> map = new HashMap<String, Object>();
Gson gson = new GsonBuilder().create();
ml = gson.fromJson(gsonString, Main.class);
HashMap<String, Object> map = new HashMap<String, Object>();
for(int i=0;i<ml.getData().getMessages().size();i++){
map.put(TAG_TITLE, ml.getData().getMessages().get(i).getTitle());
map.put(TAG_TIME, ml.getData().getMessages().get(i).getTime());
map.put(TAG_ID, ml.getData().getMessages().get(i).getId());
map.put(TAG_STATUS,ml.getData().getMessages().get(i).getStatus());
mailList.add(map);
}  
自定义适配器

public class MyAdapter extends SimpleAdapter {

public MyAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) {
super(context, data, resource, from, to);
}
public View getView(final int position, View convertView, final ViewGroup parent) {
View v = super.getView(position, convertView, parent);
 TextView txtTitle= (TextView) v.findViewById(R.id.msg_title);
 TextView txtTime= (TextView) v.findViewById(R.id.msg_date);
return v;
}
}

任何建议都是受欢迎的,就像任何关于这个问题的建议一样,谢谢你

我可以给你的一个建议是,这将减少太多的多余电话

Messages msg = ml.getData().getMessages();
for(int i=0;i<msg.size();i++){
    MessageValues mv = msg.get(i);
    map.put(TAG_TITLE, mv.getTitle());
    map.put(TAG_TIME, mv.getTime());
    map.put(TAG_ID, mv.getId());
    map.put(TAG_STATUS, mv.getStatus());
    mailList.add(map);
}  

两次

时间过长意味着什么?您是否收到ANR或性能低下导致UX问题?ml.getData.getMessages是否会是较慢的部分?确保每次都没有从磁盘读取数据。我的意思是,用gson将数据加载到listview需要2秒钟,本机json库对我来说可能是3,我在网上看到gson速度非常快,所以我想,问题是我无法使消息geti,所以我制作了mv=ml.getData,可以吗?List msg=ml.getData.getMessages;它是这样的吗?但哈希映射是最好的还是最接近这种情况?顺便说一句,可能会因为json响应太大而变慢吗?这是删除太多冗余调用的建议之一。如果您有大的json数据,您将看到差异。我可以给您的另一个建议是将ml.getData.getMessages传递给适配器,而不是将其放入哈希映射中,并根据位置在getView方法中使用它。这将删除哈希映射的使用,而哈希映射明显没有任何作用。请您帮助我提供一个代码示例,我尝试将其全部放在适配器中,但无法使其工作,如果您需要,我可以帮助您进行任何设计工作
HashMap<String, Object> map = new HashMap<String, Object>();