ListView在加载数据时挂起2-4秒

时间:2016-11-26 15:09:22

标签: java android android-layout listview android-activity

我有一个场景,我每隔15秒就会在列表视图中更新数据。

数据显示在ListView中,它有18列10行。我创建了一个ArrayAdapter,我在其中定义样式并将数据绑定到视图。

问题是,在每次访问服务器15秒后,获取JSON,解析它并将其添加到列表视图。在此过程中,UI会挂起2-4秒。

我需要知道如何避免这种延迟,我已经尝试过HandlerAsyncTask但这一切都没有帮助。

这就是我在做的事。

我添加了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,它会停止挂起。

我无法理解实际问题在哪里。

请指导我解决此问题的最佳方法。

0 个答案:

没有答案