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
.
Вы можете попытаться переместить свой график в другой включенный макет. Возможно, это не очистит данные вашего списка. – Yahor10
Какой тип ** mySimpleXYPlot **? – NOSTRA
@NOSTRA XYPlot. Я использую android plot и импортировал необходимую библиотеку. – GAMA