0

我需要创建一个表格,每个单元格都有不同的列宽。我有约 20 行和 60-80 列。这是我的代码:

private void generatingRows() {

    new AsyncTask<Void,View,Void>() {

        private ProgressDialog dialog;
        private int progress = 0;

        @Override
        protected void onPreExecute() {

            // Clear table
            table.removeAllViews();

            // Show peogress dialog
            dialog = new ProgressDialog(MyActivity.this);
            dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            dialog.setMessage("Loading");
            dialog.setCancelable(false);
            dialog.setMax(data.size);
            dialog.setProgress(0);
            dialog.show();
        }

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


            for (final RowData rowData : data) {

                // Create row
                LinearLayout row = new LinearLayout(MyActivity.this);
                row.setOrientation(LinearLayout.HORIZONTAL);

                // Add columns
                for (int i = 0; i < rowData.columns.size(); i++) {

                    // Get column values
                    final ColumnData columnData = rowData.columns.get(i);

                    // Get view
                    final View column = layoutInflater.inflate(R.layout.column, null);

                    // Set values
                    MyActivity.this.runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            TextView.class.cast(column.findViewById(R.id.title)).setText(columnData.title);
                        }
                    });

                    // Add into row
                    row.addView(column);
                }

                // Update
                progress++;
                publishProgress(new View[] {channelItem, showRow });

            }

            return null;
        }

        @Override
        protected void onProgressUpdate(View... resultViews){
            dialog.setProgress(progress);
            table.addView(resultViews[0]);
        }

        @Override
        protected void onPostExecute(Void aVoid) {
            dialog.dismiss();
        }

    }.execute();

}

“表格”视图是具有垂直方向的 LinearLayout。问题是出现了对话框,但冻结,只更新一次,两次,而不是每一行。当然,如果我跳过 onProgressUpdate 方法中的 addView 而不是完美地工作,那么进度是连续的。而且我无法在后台添加行,那么解决方案是什么?

4

0 回答 0