OnPostExecute не работает, не умеет рисовать график - PullRequest
1 голос
/ 21 декабря 2011

onButtonClcick для кнопки index, должен отображаться A graph, который получает данные из URL.Я использовал AsyncTask для того же.

Я застрял между двумя подходами.

1) Если я вызываю afterload() метод в postExecute(), который вызывается на index Нажатие кнопки, я просто получаю первый скриншот, как показано ниже, т.е. Граф не отображается .

Я отладил его, чтобы найти, что был вызван метод afterload (), но граф все еще былне отображается.

2) Если я не вызову метод afterload() в postExecute().Вместо этого я скопировал все содержимое метода afterload() в метод onCreate() new class graphView, затем GRAPH GETHET DISPLAYED .как показано на втором снимке экрана

НО ВСЕ ДРУГИЕ ФУНКЦИОНАЛЬНОСТИ, КАК ONCLICKLISTENERS, СПИСОК ДАННЫХ ФИЛЬТРАЦИИ УТРАТЕН .(обратите внимание, что во 2-й скриншоте таблица не отображается).Это связано с использованием setContentView() во втором упражнении, и, следовательно, макет перезапускается, поэтому управление переходит ко второму упражнению.

ЛЮБАЯ ПОМОЩЬ БУДЕТ СБЕРЕЖИТЬ !!!

DataAttach.java

    public class DataAttach extends Activity {
        //ALL VARIABLES DECLARED

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            init();
        }

        public void init() {
            //ALL FINDBYVIEWID COMMANDS

            DownloadWebPageTask task = new DownloadWebPageTask();
            task.execute(new String[] { "http://abc.com/" });

                ed.addTextChangedListener(new TextWatcher() {

                    public void onTextChanged(CharSequence s, int start,
                            int before, int count) {
                        //filtering listview data
                    }
                });

                lsym.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
                    public void onItemClick(AdapterView<?> parent, View view,
                            int position, long id) {

                    }
                });

                btnindex.setOnClickListener(new Button.OnClickListener() {
                    public void onClick(View v) {

                        mySimpleXYPlot.setVisibility(View.VISIBLE);
                        WebPageTask task1 = new WebPageTask();
                        task1.execute(new String[] { "http://pqr.com/" });
                    }
                });

                btngainer.setOnClickListener(new Button.OnClickListener() {
                    public void onClick(View v) {
                        DownloadWebPageTask task = new DownloadWebPageTask();
                        task.execute(new String[] { "http://xyz.com/" });
                    }
                });

                btnloser.setOnClickListener(new Button.OnClickListener() {
                    public void onClick(View v) {
                        DownloadWebPageTask task = new DownloadWebPageTask();
                        task.execute(new String[] { "http://ijk.com/" });
                    }
                });

            finally {
                dbM.close();
            }
        }

        private class DownloadWebPageTask extends AsyncTask<String, Void, String> {
            //DO SOMETHING
            }

            @Override
            protected void onPostExecute(String result) {
                //DO SOMETHING
            }
        }

        private class WebPageTask extends AsyncTask<String, Void, String> {
            @Override
            protected String doInBackground(String... urls) {
                   //FETCHING DATA FROM URL
            }

            @Override
            protected void onPostExecute(String result) {

                //POPULATING 'time' & 'current' ARRAYS

                afterload(time, current);
  //============================================================================
  //============================================================================
 //IF I USE BELOW COMMENTED CODE THEN IT DISPLAYS GRAPH BUT ALL THE ONCLICKLISTENERS DOESN'T WORK.
  //============================================================================
  //============================================================================
                // Bundle b = new Bundle();
                // b.putStringArray("time", time);
                // b.putStringArray("current", current);
                //
                // Intent i = new Intent(getApplicationContext(), DrawGraph.class);
                // i.putExtras(b);
                // DataAttach.this.startActivity(i);
            }

            public void afterload(String[] time, String[] current) {

            //POPULATING 'timenumber' & 'currentnumber' ARRAYS

                Number[] series1Numbers = timenumber;
                Number[] series2Numbers = currentnumber;

                XYSeries series1 = new SimpleXYSeries(
                        Arrays.asList(series1Numbers),
                        Arrays.asList(series2Numbers), "Reliance");

                LineAndPointFormatter series1Format = new LineAndPointFormatter(
                        Color.rgb(0, 200, 0), // line color
                        Color.rgb(0, 100, 0), // point color
                        Color.rgb(150, 190, 150)); // fill color (optional)

                mySimpleXYPlot.addSeries(series1, series1Format);
                mySimpleXYPlot.setTicksPerRangeLabel(2);
                mySimpleXYPlot.setTicksPerDomainLabel(2);
                mySimpleXYPlot.setRangeStep(XYStepMode.INCREMENT_BY_VAL, 1);
                mySimpleXYPlot.setDomainStep(XYStepMode.SUBDIVIDE, 10);
                mySimpleXYPlot.setDomainValueFormat(new MyDateFormat());
                mySimpleXYPlot.disableAllMarkup();
            }
        }

        public class MyDateFormat extends Format {
            //CONVERTING DATE FORMAT
    }

1-й и 2-й СКРИНШОТ УСТАНОВЛЕНЫ ДО И ПОСЛЕ КЛИКАНА INDEX КНОПКА.

SCREENSHOT

1 Ответ

0 голосов
/ 21 декабря 2011

Используйте mySimpleXYPlot.redraw () или mySimpleXYPlot.postRedraw () в конце метода afterload ().

Если вы видите источники: redraw () метод делает вид недействительным, поэтому ваши данные будут отображаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...