2011-12-21 3 views
1

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

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

1) Если я позвоню afterload() метод в postExecute(), который называется на index кнопки мыши, я просто получаю 1-й скриншот, как показано ниже т.е. ГРАФИКА НЕ ЧЕГО ОТОБРАЖЕНИЕ.

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

2) Если я не позвоню afterload() метод в postExecute(). Вместо этого я скопировал все содержимое метода afterload() в метод onCreate() новый класс graphView, затем GRAPH ПОЛУЧЕН ОТОБРАЖЕН. как показано на 2-м снимке экрана

BUT ВСЕ ДРУГАЯ ФУНКЦИОНАЛЬНОСТЬ, КАК ОН-КЛИКЛИСТЕРЫ, ФИЛЬТРИРУЮЩИЙ СПИСОК ДАННЫХ ПОТЕРИ. (обратите внимание, что на втором скриншоте таблица не отображается). Это связано с использованием 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 
    } 

1ST & 2-Й SCREENSHOT ПРИНИМАЮТСЯ ДО & ПОСЛЕ НАЖАВ КНОПКУ INDEX.

SCREENSHOT

+0

Вы можете попытаться переместить свой график в другой включенный макет. Возможно, это не очистит данные вашего списка. – Yahor10

+0

Какой тип ** mySimpleXYPlot **? – NOSTRA

+0

@NOSTRA XYPlot. Я использую android plot и импортировал необходимую библиотеку. – GAMA

ответ

0

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

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