Java 更新异步任务中的多个视图内容后刷新Android中的活动

Java 更新异步任务中的多个视图内容后刷新Android中的活动,java,android,multithreading,tablerow,android-asynctask,Java,Android,Multithreading,Tablerow,Android Asynctask,当用户单击按钮时,我的主要活动调用AsyncTask。此AsyncTask执行相当长的操作,包括一个进度对话框。其中一些操作涉及将TableRow视图添加到“我的主要活动”中的现有表中 但是,我的问题是,操作完成后,这些行不会显示在活动GUI中。我知道它们是正确创建的,因为如果我按手机上的“菜单”退出应用程序,然后再次打开应用程序,TableRow视图将相应地填充到各自的位置。一切看起来都很完美…UI线程没有重新加载 因此,我显然缺少在AsyncTask完成其职责后调用的某种函数。有人知道这个刷

当用户单击按钮时,我的主要活动调用AsyncTask。此AsyncTask执行相当长的操作,包括一个进度对话框。其中一些操作涉及将TableRow视图添加到“我的主要活动”中的现有表中

但是,我的问题是,操作完成后,这些行不会显示在活动GUI中。我知道它们是正确创建的,因为如果我按手机上的“菜单”退出应用程序,然后再次打开应用程序,TableRow视图将相应地填充到各自的位置。一切看起来都很完美…UI线程没有重新加载

因此,我显然缺少在AsyncTask完成其职责后调用的某种函数。有人知道这个刷新函数可能是什么吗

多谢各位

代码如下:

public void buttonClick(View view) {
    if (view.getId() == R.id.button_begin) {
        cr = this.getContentResolver();
        dialog = new ProgressDialog(this);
        dialog.setCancelable(false);
        dialog.setMessage("Checking...");
        dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        // reset the bar to the default value of 0
        dialog.setProgress(0);
        // display the progress bar
        dialog.show();
        new mainAsyncTask().execute();
    }

}

    @Override
    protected void onPreExecute() {

        try {
            //create row span so description can overlap columns in the rows
            span = new TableRow.LayoutParams();
            span.span = 3;

            // set the maximum value
            dialog.setMax(numberOfItems.length);
            //initialize facebook
            fb = new FacebookInfo(context, mainActivity, settings, numberOfItems.length, isPaid, settings.getBoolean("checkBoxShareShort", false));
            description = new String[numberOfItems.length];
            factor = new String[numberOfItems.length];
            cool = new String[numberOfItems.length];
            cannot = new String[numberOfItems.length];
            name = new String[numberOfItems.length];
            ivFacebookPub = new ImageView[numberOfItems.length];
            ivShare = new ImageView[numberOfItems.length];
            tableGrid = new TableLayout[numberOfItems.length];

            super.onPreExecute();

            }
            catch (Exception ex) {
                StringWriter sw = new StringWriter();
                PrintWriter pw = new PrintWriter(sw);
                ex.printStackTrace(pw);
                table.addView(rowError);
                rowError.addView(tvError, 0, span);
            }
    }


    @Override
    protected Void doInBackground(Void... params) {

        for (int i = 0; i < numberOfItems.length; i++){


            try {

                if (Numbers[i] != null) {


                    if (flag == true) {
                        flag = false;
                    }
                    else if (flag == false) {
                        flag = true;
                    }               
                    fb.addDescription(i, justStuff2[1]);
                    fb.addCannot(i, justStuff2[0]);
                    description[i] = justStuff2[1];
                    cannot[i] = justStuff2[0];
                    //initialize table
                    tableGrid[i] = TableVisuals.createTable(context, flag, i, clickViewContact);    
                    //initialize rows
                    TableRow rowNamePhoto2 = new TableRow(context);
                    TableRow rowCannot2 = new TableRow(context);
                    TableRow rowStuff = new TableRow(context);
                    TableRow rowStuff2 = new TableRow(context);
                    TableRow rowInfo2 = new TableRow(context);
                    TableRow rowShare2 = new TableRow(context);

                    //create rows
                    rowNamePhoto2 = TableVisuals.createRow(context, flag);
                    rowCannot2 = TableVisuals.createRow(context, flag);
                    rowStuff = TableVisuals.createRow(context, flag);

                    //initialize views
                    TextView tvName2 = new TextView(context);
                    ImageView ivPhoto2 = new ImageView(context);
                    ImageView ivArrow2 = new ImageView(context);

                    TextView tvCannot2 = new TextView(context);
                    TextView tvDescription = new TextView(context);

                    //add data to views
                    tvName2 = TableVisuals.getName(context, cr, Numbers[i]);
                    ivPhoto2 = TableVisuals.getPhoto(context, cr, Numbers[i]);
                    ivArrow2 = TableVisuals.getArrowIcon(context, cr, Numbers[i]);
                    tvCannot2 = TableVisuals.getCannot(context, justStuff2[0]);
                    tvDescription = TableVisuals.getStuff(context, justStuff2[1]);

                    //add views to row
                    rowNamePhoto2.addView(ivPhoto2, 0);
                    rowNamePhoto2.addView(tvName2, 1);
                    rowNamePhoto2.addView(ivArrow2, 2);
                    rowCannot2.addView(tvCannot2, 0, span);
                    rowStuff.addView(tvDescription, 0, span);



                    //populate data
                    fb.addName(i, (String)tvName2.getText());
                    name[i] = (String)tvName2.getText();

                    if (isPaid == true) {

                        //create rows
                        rowStuff2 = TableVisuals.createRow(context, flag);
                        rowInfo2 = TableVisuals.createRow(context, flag);

                        //initialize views
                        TextView tvRatio2 = new TextView(context);
                        TextView tvVariance2 = new TextView(context);

                        //add data to views
                        tvRatio2 = TableVisuals.getRatio(context, justStuff2[3]);
                        tvVariance2 = TableVisuals.getVariance(context, justStuff2[2]);

                        //add views to row
                        rowStuff2.addView(tvRatio2, 0, span);
                        rowInfo2.addView(tvVariance2, 0, span);

                        //populate data
                        fb.addCool(i, (String)tvRatio2.getText());
                        fb.addFactor(i, (String)tvVariance2.getText());
                        cool[i] = (String)tvRatio2.getText();
                        factor[i] = (String)tvVariance2.getText();
                        }

                    if (settings.getBoolean("checkBoxSharing", true) == true) {

                        rowShare2 = TableVisuals.createRow(context, flag);
                        ivFacebookPub[i] = TableVisuals.createFacebookPublish(context, i, fb.clickFacebookPublish);
                        //add facebookPublish button
                        rowShare2.addView(ivFacebookPub[i], 0);
                        //add share button
                        ivShare[i] = TableVisuals.createShare(context, i, fb.clickShareResults);
                        rowShare2.addView(ivShare[i], 1);

                        }           
                    //add rows to table
                    tableGrid[i].addView(rowNamePhoto2);
                    tableGrid[i].addView(rowCannot2);
                    if (isPaid) {
                        tableGrid[i].addView(rowStuff2);
                        tableGrid[i].addView(rowInfo2);
                    }
                    tableGrid[i].addView(rowStuff);
                    if (settings.getBoolean("checkBoxSharing", true) == true) {
                    tableGrid[i].addView(rowShare2);
                    }
                    //add table to the main table
                    table.addView(tableGrid[i]);
                    //initialize line
                    TableRow rowLine2 = new TableRow(context);
                    rowLine2 = TableVisuals.createLineRow(context);
                    TextView tvLine2 = new TextView(context);
                    tvLine2 = TableVisuals.createRowLine(context);
                    //add line view
                    rowLine2.addView(tvLine2, 0, span);
                    table.addView(rowLine2);                        
                    }
                publishProgress(i,0);      
    }
            catch (Exception ex) {
                StringWriter sw = new StringWriter();
                PrintWriter pw = new PrintWriter(sw);
                ex.printStackTrace(pw);
                publishProgress(i, 1);

            }
        }
        return null;
    }

    @Override
    protected void onProgressUpdate(Integer... value) {
        dialog.setProgress(value[0]);
    }

    @Override
    protected void onPostExecute(Void unused) {
        //close progress bar dialog
        dialog.dismiss();   
         //here is where I try the invalidate and postInvalidate
       table.invalidate();
       for (int i = 0; i < numberOfItems.length; i++) {

           tableGrid[i].invalidate();
       }
public void按钮单击(查看){
if(view.getId()==R.id.button\u begin){
cr=this.getContentResolver();
dialog=新建ProgressDialog(此);
对话框。可设置可取消(false);
设置消息(“正在检查…”);
设置ProgressStyle(ProgressDialog.STYLE_水平);
//将条形图重置为默认值0
对话框。设置进度(0);
//显示进度条
dialog.show();
新建mainAsyncTask().execute();
}
}
@凌驾
受保护的void onPreExecute(){
试一试{
//创建行范围,以便说明可以与行中的列重叠
span=新建TableRow.LayoutParams();
span.span=3;
//设置最大值
setMax(numberOfItems.length);
//初始化facebook
fb=新的FacebookInfo(上下文、mainActivity、设置、numberOfItems.length、isPaid、settings.getBoolean(“checkBoxShareShort”,false));
description=新字符串[numberOfItems.length];
系数=新字符串[numberOfItems.length];
cool=新字符串[numberOfItems.length];
不能=新字符串[numberOfItems.length];
name=新字符串[numberOfItems.length];
ivFacebookPub=新图像视图[numberOfItems.length];
ivShare=新图像视图[numberOfItems.length];
tableGrid=新的TableLayout[numberOfItems.length];
super.onPreExecute();
}
捕获(例外情况除外){
StringWriter sw=新的StringWriter();
PrintWriter pw=新的PrintWriter(sw);
例如printStackTrace(pw);
table.addView(行错误);
rowrerror.addView(tvrerror,0,span);
}
}
@凌驾
受保护的Void doInBackground(Void…参数){
for(int i=0;i