我有一个场景,我每隔15秒就会在列表视图中更新数据。
数据显示在ListView中,它有18列10行。我创建了一个ArrayAdapter,我在其中定义样式并将数据绑定到视图。
问题是,在每次访问服务器15秒后,获取JSON,解析它并将其添加到列表视图。在此过程中,UI会挂起2-4秒。
我需要知道如何避免这种延迟,我已经尝试过Handler
,AsyncTask
但这一切都没有帮助。
这就是我在做的事。
我添加了2 Tab Layouts
,每个ListView
tabLayout = (TabLayout) findViewById(R.id.tab_gd_players);
viewPager = (ViewPager) findViewById(R.id.gd_player_details_view_pager);
tabViewPagerAdapter = new TabViewPagerAdapter(getSupportFragmentManager());
homePlayersFragment = new PlayersFragment();
awayPlayersFragment = new PlayersFragment();
tabViewPagerAdapter.addFragments(awayPlayersFragment, awayTeam);
tabViewPagerAdapter.addFragments(homePlayersFragment, homeTeam);
viewPager.setAdapter(tabViewPagerAdapter);
tabLayout.setupWithViewPager(viewPager);
在每15秒的时间间隔内我这样做。
homePlayersFragment.setData(dataModel, "homeTeam");
awayPlayersFragment.setData(dataModel, "awayTeam");
在Fragment中,我初始化ArrayAdapter
public void setData(PlayerDataModel dataModel, String fragmentName){
this.dataModel= dataModel;
this.fragmentName= fragmentName;
if(dataModel != null) {
GDPlayersNameAdapter gdPlayersNameAdapter = new GDPlayersNameAdapter(getActivity(), dataModel, fragmentName);
lvPlayersName.setAdapter(gdPlayersNameAdapter);
GDPlayersDetailsAdapter gdPlayersDetailsAdapter = new GDPlayersDetailsAdapter(getActivity(), dataModel, fragmentName);
lvPlayersDetails.setAdapter(gdPlayersDetailsAdapter);
}
所以每隔15秒就会调用setData()
。
在适配器中我将数据传递给列,如果我将列数从18移到1,它会停止挂起。
我无法理解实际问题在哪里。
请指导我解决此问题的最佳方法。