TextView中的长文本

时间:2013-06-24 14:25:21

标签: android textview longtext

我有一个按钮,当我点击它时,我将textView.setText()设为一个非常大的文本,50000个符号,并且界面停止3秒,我该如何解决?

  1. 我尝试用Handle和thread来制作它,但它没有帮助。
  2. 我试图制作textview.append(),但它也没有帮助。

                MainActivity.this.runOnUiThread(new Runnable() {
    
                @Override
                public void run() {
    
                    textText.append(rowItemHeader.getText().substring((endOfNews - 10000, endOfNews));
                }
            });
    

    编辑1无结果

  3. private class MyTask extends AsyncTask <Void, Void, String> { String str; TextView txt;

        MyTask(String str, TextView txt){
            this.str = str;
            this.txt = txt;
    
        }
        public String doInBackground(Void... args) {
    
            return str.substring(endOfNews - 10000, endOfNews);
        }
    
        public void onPostExecute(String myString) {
            // do your update here or you will get that error (the original thread one)
            txt.append(myString);
        }
    }
    

4 个答案:

答案 0 :(得分:0)

你是如何宣布这个帖子的? 你应该使用类似的东西:

this.runOnUiThread(new Runnable() {

        @Override
        public void run() {
            // TODO Auto-generated method stub
            Log.e("TAG synchronize", "synchronize");
        }
});

答案 1 :(得分:0)

使用AsyncTask,它们就是您想要的。它们是一个辅助线程,易于设置并从主线程执行。

使用appends使用TextView runOnUiThread(new Runnable(...)...)生成文本的Thread.sleep(50)部分的线程中使用循环,并调用{{1}}强制线程休眠那么多毫秒防止滞后。

答案 2 :(得分:0)

使用AyncTask,例如:

private class MyTask extends AsyncTask<Void, Void, String> {

    private Context context;       

    public MyTask(Context context) {
        this.context = context;
    }

    public String doInBackground(Void... args) {
        // do your job here
        return myString;
    }

    public void onPostExecute(String myString) {
        // do your update here or you will get that error (the original thread one)
        ((TextView)context.findViewById(R.id.textview)).setText(myString);
    }
}

然后在您的活动中

new MyTask(MyActivity.this).execute();

答案 3 :(得分:0)

首先,删除视图,然后在后台线程上添加文本,然后再添加视图。如果您需要一些示例代码,请告诉我。