将大量文本设置为Textview的最佳方法

时间:2015-10-01 12:13:51

标签: android android-layout android-viewpager textview

我遇到了一个新问题。 在我的应用程序中,有一部分我们称之为X. X部分有5个标签(使用Viewpager和......) 当用户点击按钮开始X活动时,因为,我必须为所有选项卡设置文本(并且有5个选项卡),根据手机的不同,有一个延迟,在低级别手机上, 4-7秒!!! 那么,我该怎么做才能解决问题呢? 我的方式: 1-更改我的UI设计并将5个标签拆分为5个单个活动。 2-使用进度条(或类似进度条),不要改变我的设计。(问题是我不知道怎么做,我的意思是我不知道什么时候设置了所有的文字)

其他解决方案是什么?  所以,如果我想使用AsynckTask,那么代码会是这样的吗? 主:

public class Law_main extends AppCompatActivity {
    FrameLayout fl_TEMP;
    TextView btn_ASD;
    ViewPager viewPager;
    PagerAdapter adapter;
    TabLayout tabLayout;
    ProgressBar progressBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.law_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        progressBar = (ProgressBar) findViewById(R.id.progressBar);

        tabLayout = (TabLayout) findViewById(R.id.tab_layout);
        tabLayout.addTab(tabLayout.newTab().setText("TAB 1"));
        tabLayout.addTab(tabLayout.newTab().setText("TAB 2"));
        tabLayout.addTab(tabLayout.newTab().setText("TAB 3"));
        tabLayout.addTab(tabLayout.newTab().setText("TAB 4"));
        tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);


        fl_TEMP = (FrameLayout) findViewById(R.id.TEMP);
        btn_ASD = (TextView) findViewById(R.id.ASD);


        new TxtTimer().execute();


        final View appbar = findViewById(R.id.appbar);

        viewPager = (ViewPager) findViewById(R.id.pager);



        viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
        tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                viewPager.setCurrentItem(tab.getPosition());

            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {

            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {

            }
        });


    }




    private class TxtTimer extends AsyncTask<String, Integer, String> {
        @Override
        protected void onPreExecute() {

            super.onPreExecute();
        }

        @Override
        protected String doInBackground(String... strings) {


            return null;
        }

        @Override
        protected void onProgressUpdate(Integer... values) {
            super.onProgressUpdate(values);

        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            adapter = new PagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount());
            viewPager.setAdapter(adapter);

            viewPager.setCurrentItem(1, true);
            progressBar.setVisibility(View.GONE);
        }
    }
}

此代码的行为如下: 当用户点击打开X活动时,用户会停留在活动中,过了一会儿,当所有文本都设置好后,x活动就会打开,所以根本没有帮助。 我错了吗?

3 个答案:

答案 0 :(得分:0)

根据您检索文字的方式,请考虑使用AsyncTask。您还可以在片段加载时在片段上放置一个进度圈,以便应用程序看起来没有冻结。

答案 1 :(得分:0)

在RobVoisey所说的基础上,并且不完全知道您的用例,我会首先加载第一个标签文本,以便为用户提供一些内容,并使用{{3同时加载其他标签的文本在适当和/或必要时显示加载图形。

答案 2 :(得分:-1)

在选项卡中使用片段并使用片段生命周期加载内容,您将在每个片段上加载1/5文本的起点。