Java 列表视图加载速度更快

Java 列表视图加载速度更快,java,android,listview,listadapter,Java,Android,Listview,Listadapter,我使用的是ListView,但它的加载速度太慢,我需要它更快地加载,我不确定如何让适配器逐个加载每个ListView,这可能吗? 这是我的密码: ArrayList<String> myTripOrigin = new ArrayList<>(); ArrayList<String> myTripDestiny = new ArrayList<>();

我使用的是ListView,但它的加载速度太慢,我需要它更快地加载,我不确定如何让适配器逐个加载每个ListView,这可能吗? 这是我的密码:

                ArrayList<String> myTripOrigin = new ArrayList<>();
                ArrayList<String> myTripDestiny = new ArrayList<>();
                ArrayList<String> myTripHour = new ArrayList<>();
                ArrayList <boolean[]> myTripSchedule = new ArrayList<>();
                ArrayList<Boolean> myTripBools = new ArrayList<Boolean>();


                for(int i = 0; i<response.body().size();i++)
                {
                    myTripBools.add(response.body().get(i).isRol());
                    myTripOrigin.add(getAdress(new LatLng(Double.parseDouble(response.body().get(i).getOrigin_lat()),Double.parseDouble(response.body().get(i).getOrigin_lng()))));
                    myTripDestiny.add(getAdress(new LatLng(Double.parseDouble(response.body().get(i).getDestiny_lat()),Double.parseDouble(response.body().get(i).getDestiny_lng()))));
                    Date date = new Date((Long.parseLong(response.body().get(i).getArrival_time()))*1000L);
                    DateFormat format = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss aa");
                    format.setTimeZone(TimeZone.getDefault());
                    String formatted = format.format(date);
                    myTripHour.add(formatted);


                }

                //Send the array to constructor
                ListAdapter userAdapter = new CustomAdapterRoute(getApplicationContext(), myTripOrigin,myTripDestiny,myTripHour,myTripSchedule,myTripBools);
                ListView userListView = (ListView) findViewById(R.id.listViewRoute);
                userListView.setAdapter(userAdapter);

            }
ArrayList myTripOrigin=new ArrayList();
ArrayList myTripDestiny=新的ArrayList();
ArrayList myTripHour=新建ArrayList();
ArrayList myTripSchedule=新建ArrayList();
ArrayList myTripBools=新的ArrayList();

对于(int i=0;i正如我所想。您应该使用holder模式:使其更快,正如我所想。您应该使用holder模式:使其更快,在第一段代码中,您一直在调用
response.body()
(为什么不将body放入变量并重用它?)

然后在适配器中,您没有重用
convertView

View customView;
if(convertView == null) {
   view = customInflater.inflate(R.layout.custom_row_route, parent, false);
} else {
   customView = convertView;
}
此外,还可以将
LayoutInflater
存储为适配器的实例变量

顺便说一句,自定义前缀是非常冗余的,因为您编写的所有代码都将根据定义进行自定义


另一个答案(来自@Gavriel)的平滑滚动链接也很重要。

在第一段代码中,您一直在调用
response.body()
(为什么不将body放入变量并重用它?)

然后在适配器中,您没有重用
convertView

View customView;
if(convertView == null) {
   view = customInflater.inflate(R.layout.custom_row_route, parent, false);
} else {
   customView = convertView;
}
此外,还可以将
LayoutInflater
存储为适配器的实例变量

顺便说一句,自定义前缀是非常冗余的,因为您编写的所有代码都将根据定义进行自定义


以及另一个答案的平滑滚动链接(来自@Gavriel)也很重要。

您还没有包括代码中最重要的部分:CustomAdapter您是如何创建自定义适配器的?您是想纯粹提高现有程序的速度,还是寻求更好的实现方法?为什么不创建一个模型类,然后创建该模型类的数组,而不是使用多个数组。@Gavriel感谢您刚刚添加了CustomAdapterRout您还没有包括代码中最重要的部分:CustomAdapterRout您是如何创建自定义适配器的?您是想纯粹提高现有程序的速度,还是想用更好的方法实现?为什么不创建一个模型类,然后创建该模型类的数组而不是使用多个数组。@Gavriel感谢您刚刚添加了CustomAdapterRoute