I am creating a application in which I add data in one screen and show the data in MP Chart in another screen. The MainActivity is where I pull data from a DataBaseHelper class and show it in MPAndroidChart. For some reason I am not able to get data when I pull it from sql. Ccn someone tell me what is the issue with the code? I am new to Java and I think issue is int he way I am handling the array. The code works but all I see in the Bar chart is Bars of size 2. Thanks for your time.
MainActivity-
package app.num.groupbarchart;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.Toast;
import com.github.mikephil.charting.charts.CombinedChart;
import com.github.mikephil.charting.data.BarData;
import com.github.mikephil.charting.data.BarDataSet;
import com.github.mikephil.charting.data.BarEntry;
import com.github.mikephil.charting.data.CombinedData;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet;
import com.github.mikephil.charting.utils.ColorTemplate;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity implements AdapterView.OnClickListener {
/* Comment: Declare variables & UI elements */
Button dummy;
DataBaseHelper db;
/* Comment : Have to implement with the OnClickListner
onClick is called when a view has been clicked.*/
public void onClick(View v) { // Parameter v stands for the view that was clicked.
final Context context = this;
// getId() returns this view's identifier.
if (v.getId() == R.id.dummy) {
Intent intent = new Intent(context, AddActivity.class);
Log.e("addListenerOnButton", "Starting Activity");
startActivity(intent);
Log.e("addListenerOnButton", "After Starting Activity");
// setText() sets the string value of the TextView
//changingTextView.setText("You clicked First");
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
db = new DataBaseHelper(this);
//changingTextView = (TextView) findViewById(R.id.changingTextView);
dummy = (Button) findViewById(R.id.dummy);
// When we creating a button and if we expect that to use for event handling we have to set the listener
dummy.setOnClickListener(this);
CombinedChart combinedChart = (CombinedChart) findViewById(R.id.chart);
CombinedData data = new CombinedData(getXAxisValues());
data.setData(barData());
data.setData(lineData());
combinedChart.setData(data);
combinedChart.setDescription("My Combined line & Bar Chart");
combinedChart.animateXY(2000, 2000);
/* Comment : Code to test call to insert called from Chart UI.
Dummy data will be inserted to avoid SQL exception on 1st run */
if (db.InsertDummy()) {
Toast.makeText(getApplicationContext(), "Success", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "Failed to Insert the Record!!!", Toast.LENGTH_SHORT).show();
}
}
/* Comment: creating list of hard coded x-axis values */
private ArrayList<String> getXAxisValues() {
ArrayList<String> labels = new ArrayList<>();
labels.add("ERYTHROCYTE COUNT");
labels.add("HAEMOGLOBIN");
labels.add("P.C.V.");
labels.add("RDW");
labels.add("M.C.V.");
labels.add("M.C.H.");
labels.add("M.C.H.C.");
labels.add("LEUCOCYTE COUN");
labels.add("PLATELETS ");
labels.add("NEUTROPHILS ");
labels.add("EOSINOPHILS ");
labels.add("LYMPHOCYTES ");
/* Comment: Code : dbh.GetRecords();*/
return labels;
}
/* Commented: This method is used to create data for line graph */
public LineData lineData() {
/*Comment: If there are no rows in table 'record' then show hard coded values else show data from database*/
ArrayList<Entry> line = new ArrayList<>();
ArrayList result = db.GetRecords();
if (result == null) {
System.out.println("no data");
Log.e("Logger", "AJAYResult.NULL");
line.add(new Entry(2f, 0));
line.add(new Entry(4f, 1));
line.add(new Entry(3f, 2));
line.add(new Entry(6f, 3));
line.add(new Entry(9f, 4));
line.add(new Entry(4f, 5));
line.add(new Entry(2f, 6));
line.add(new Entry(4f, 7));
line.add(new Entry(3f, 8));
line.add(new Entry(6f, 9));
line.add(new Entry(9f, 10));
line.add(new Entry(4f, 11));
} else {
//do {
Log.e("Logger", "AJAYResult.NOTNULL");
/*Comment: Actual Hard coded code :: line.add(new Entry(2f, 0)); */
line.add(new Entry(Float.parseFloat(result.get(1).toString()), 1));
line.add(new Entry(Float.parseFloat(result.get(1).toString()), 2));
line.add(new Entry(Float.parseFloat(result.get(1).toString()), 3));
line.add(new Entry(Float.parseFloat(result.get(1).toString()), 4));
line.add(new Entry(Float.parseFloat(result.get(1).toString()), 5));
line.add(new Entry(Float.parseFloat(result.get(1).toString()), 6));
line.add(new Entry(Float.parseFloat(result.get(1).toString()), 7));
line.add(new Entry(Float.parseFloat(result.get(1).toString()), 8));
line.add(new Entry(Float.parseFloat(result.get(1).toString()), 9));
line.add(new Entry(Float.parseFloat(result.get(1).toString()), 10));
line.add(new Entry(Float.parseFloat(result.get(1).toString()), 11));
line.add(new Entry(Float.valueOf(result.get(1).toString()), 12));
Log.e("Logger", "AJAYResult.Float.valueOf(result.get(1).toString())"+Float.valueOf(result.get(1).toString()));
// } //while (result.nex);
}
LineDataSet lineDataSet = new LineDataSet(line, "Brand 2");
lineDataSet.setColors(ColorTemplate.COLORFUL_COLORS);
LineData lineData = new LineData(getXAxisValues(), lineDataSet);
return lineData;
}
// this method is used to create data for Bar graph
public BarData barData() {
ArrayList<BarEntry> group1 = new ArrayList<>();
ArrayList<Entry> line = new ArrayList<>();
ArrayList result = db.GetRecords();
Log.e("Logger", "Bef Result check" );
if (result==null) {
Log.e("Logger", "array is length null");
}else
{
Log.e("Logger", "result toString" + result.toString());
}
if (result == null) {
System.out.println("no data");
Log.e("Logger", "BARDATA.NULL");
group1.add(new BarEntry(4f, 0));
group1.add(new BarEntry(8f, 1));
group1.add(new BarEntry(6f, 2));
group1.add(new BarEntry(12f, 3));
group1.add(new BarEntry(18f, 4));
group1.add(new BarEntry(9f, 5));
group1.add(new BarEntry(4f, 6));
group1.add(new BarEntry(8f, 7));
group1.add(new BarEntry(6f, 8));
group1.add(new BarEntry(12f, 9));
group1.add(new BarEntry(18f, 10));
group1.add(new BarEntry(9f, 11));
} else {
Log.e("Logger", "AJAYResult.BARDATA.NOTNULL");
/*Comment: Actual Hard coded code :: line.add(new Entry(2f, 0)); */
group1.add(new BarEntry(Float.parseFloat(result.get(1).toString()), 0));
group1.add(new BarEntry(Float.parseFloat(result.get(1).toString()), 1));
group1.add(new BarEntry(Float.parseFloat(result.get(1).toString()), 2));
group1.add(new BarEntry(Float.parseFloat(result.get(1).toString()), 3));
group1.add(new BarEntry(Float.parseFloat(result.get(1).toString()), 4));
group1.add(new BarEntry(Float.parseFloat(result.get(1).toString()), 5));
group1.add(new BarEntry(Float.parseFloat(result.get(1).toString()), 6));
group1.add(new BarEntry(Float.parseFloat(result.get(1).toString()), 7));
group1.add(new BarEntry(Float.parseFloat(result.get(1).toString()), 8));
group1.add(new BarEntry(Float.parseFloat(result.get(1).toString()), 9));
group1.add(new BarEntry(Float.parseFloat(result.get(1).toString()), 10));
group1.add(new BarEntry(Float.parseFloat(result.get(1).toString()), 11));
Log.e("Logger", "Group NN"+ Float.valueOf(result.get(1).toString()));
// } //while (result.nex);
}
BarDataSet barDataSet = new BarDataSet(group1, "Brand 1");
//barDataSet.setColor(Color.rgb(0, 155, 0));
barDataSet.setColors(ColorTemplate.COLORFUL_COLORS);
BarData barData = new BarData(getXAxisValues(), barDataSet);
return barData;
}
}
-----------
DataBaseHelper Class
package app.num.groupbarchart;
/**
* Created by Shogun on 4/16/2016.
*/
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import java.util.ArrayList;
/**
* Created by user on 11/13/2015.
*/
public class DataBaseHelper extends SQLiteOpenHelper
{
public static final String TABLE_NAME = "record";
public static final String COLUMN_ID = "id";
public static final String COLUMN_NAME_1 = "ERYTHROCYTE";
public static final String COLUMN_NAME_2 = "HAEMOGLOBIN";
public static final String COLUMN_NAME_3 = "PCV";
public static final String COLUMN_NAME_4 = "RDW";
public static final String COLUMN_NAME_5 = "MCV";
public static final String COLUMN_NAME_6 = "MCH";
public static final String COLUMN_NAME_7 = "MCHC";
public static final String COLUMN_NAME_8 = "LEUCOCYTECOUNT";
public static final String COLUMN_NAME_9 = "PLATELETS";
public static final String COLUMN_NAME_10 = "NEUTROPHILS";
public static final String COLUMN_NAME_11 = "EOSINOPHILS";
public static final String COLUMN_NAME_12 = "LYMPHOCYTES";
public DataBaseHelper(Context context)
{
super(context, "Record", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db)
{
//db.execSQL("CREATE TABLE IF NOT EXISTS record (name text, phone integer);");
db.execSQL("CREATE TABLE IF NOT EXISTS record (id INTEGER PRIMARY KEY AUTOINCREMENT, MONTH TEXT, ERYTHROCYTE INTEGER, HAEMOGLOBIN INTEGER, PCV INTEGER, RDW INTEGER, MCV INTEGER, MCH INTEGER, MCHC INTEGER,LEUCOCYTECOUNT INTEGER, PLATELETS INTEGER, NEUTROPHILS INTEGER, EOSINOPHILS INTEGER,LYMPHOCYTES INTEGER);");
Log.e("Logger:DBH:TB Created",">>");
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
}
//
public boolean InsertDummy()
{
SQLiteDatabase db = this.getWritableDatabase(); // Get the Reference of the Database
try
{
ContentValues values = new ContentValues();
values.put("MONTH","Jan");
values.put("ERYTHROCYTE", 11);
values.put("HAEMOGLOBIN", 2);
values.put("PCV", 3);
values.put("RDW", 4);
values.put("MCV", 5);
values.put("MCH", 6);
values.put("MCHC", 7);
values.put("LEUCOCYTECOUNT", 8);
values.put("PLATELETS", 9);
values.put("MONTH", 10);
values.put("NEUTROPHILS", 11);
values.put("EOSINOPHILS", 12);
values.put("LYMPHOCYTES", 13);
Log.e("Logger:InsertDummy",">>");
if(db.insert("record", null, values)!=-1)
Log.e("Post Insert",">>");
//
Cursor c = db.rawQuery("SELECT * FROM record ", null);
if (c.getCount() == 0) {
Log.e("Error", "No records found");
}
StringBuffer buffer = new StringBuffer();
while (c.moveToNext()) {
//Added 19/03/2016
//MONTH,ERYTHROCYTE,HAEMOGLOBIN,PCV,RDW,MCV,MCH,MCHC,LEUCOCYTECOUNT,PLATELETS,NEUTROPHILS,EOSINOPHILS,LYMPHOCYTES
/* resultList.add(1,c.getString(1));
resultList.add(2,c.getString(2));*/
buffer.append("Month: " + c.getString(1) + "\n");
buffer.append("ERYTHROCYTE: " + c.getInt(2) + "\n");
buffer.append("HAEMOGLOBIN: " + c.getString(3) + "\n");
buffer.append("PCV: " + c.getString(4) + "\n");
buffer.append("RDW: " + c.getString(5) + "\n");
buffer.append("MCV: " + c.getString(6) + "\n");
buffer.append("MCH: " + c.getString(7) + "\n");
buffer.append("MCHC: " + c.getString(8) + "\n");
buffer.append("LEUCOCYTECOUNT: " + c.getString(9) + "\n");
buffer.append("PLATELETS: " + c.getString(10) + "\n");
buffer.append("NEUTROPHILS: " + c.getString(11) + "\n");
buffer.append("EOSINOPHILS: " + c.getString(12) + "\n");
buffer.append("LYMPHOCYTES: " + c.getString(13) + "\n");
Log.e("Logger:LYMPHOCYTES", ": " + c.getString(13));
}
c.close();
//tvValues.setText("Data:" + buffer.toString());
Log.e(" Dbh insertd Values", "-" + buffer.toString());
//
return true;
}
catch(Exception ex) {
Log.e("SQL Ex:InsertDummy",">>"+ex);
}
finally
{
db.close(); // Close Database Transaction
}
return false;
}
//
public boolean InsertRecord(String MONTH, int ERYTHROCYTE, int HAEMOGLOBIN, int PCV, int RDW , int MCV , int MCH , int MCHC,int LEUCOCYTECOUNT , int PLATELETS, int NEUTROPHILS , int EOSINOPHILS ,int LYMPHOCYTES )
{
SQLiteDatabase db = this.getWritableDatabase(); // Get the Reference of the Database
try
{
ContentValues values = new ContentValues();
values.put("MONTH", MONTH);
values.put("ERYTHROCYTE", ERYTHROCYTE);
values.put("HAEMOGLOBIN", HAEMOGLOBIN);
values.put("PCV", PCV);
values.put("RDW", RDW);
values.put("MCV", MCV);
values.put("MCH", MCH);
values.put("MCHC", MCHC);
values.put("LEUCOCYTECOUNT", LEUCOCYTECOUNT);
values.put("PLATELETS", PLATELETS);
values.put("MONTH", MONTH);
values.put("NEUTROPHILS", NEUTROPHILS);
values.put("EOSINOPHILS", EOSINOPHILS);
values.put("LYMPHOCYTES", LYMPHOCYTES);
Log.e("Logger:InsertRec",">>");
if(db.insert("record", null, values)!=-1)
return true;
}
catch(Exception ex) {
Log.e("SQL Exception:InsertRec",">>"+ex);
}
finally
{
db.close(); // Close Database Transaction
}
return false;
}
public ArrayList<String> GetRecords() {
Log.e("Logger", "GetRecords got called");
SQLiteDatabase db = this.getReadableDatabase();
Log.e("Logger", "Before Dummy INsert");// Get the Reference of the Database
ArrayList<String> xNewData = null;
Log.e("Logger", "After Dummy INsert");
try {
Cursor cursor = db.rawQuery("select * from record", null);
if (cursor.moveToFirst() == true) {
do {
Log.v("Data From Database", "Name: " + cursor.getString(0) + " Phone: " + cursor.getInt(1));
Log.e("Logger", ">>>>" + cursor.getString(0));//+ "','" + HAEMOGLOBIN.getText() + "','" + PCV.getText() +"','" +RDW.getText()+"','" + MCV.getText() +"','" + MCH.getText() +"','" + MCHC.getText() +"','" +LEUCOCYTECOUNT.getText() +"','" + PLATELETS.getText() +"','" + NEUTROPHILS.getText() +"','" + EOSINOPHILS.getText() +"','" + LYMPHOCYTES.getText());
xNewData = new ArrayList<String>();
for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
xNewData.add(cursor.getString(cursor.getColumnIndex(COLUMN_NAME_1)));
xNewData.add(cursor.getString(cursor.getColumnIndex(COLUMN_NAME_2)));
Log.e("xNewData", "" + xNewData.toString());
}
//return xNewData;
} while (cursor.moveToNext() == true);
}
} catch (Exception ex) {
} finally {
db.close(); // Close Database Transaction
}
return xNewData;
}
}
------
Let me know if my question is not clear. Thanks a lot for your time. Regards
Aucun commentaire:
Enregistrer un commentaire