SQLite
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> SQLite

làm thế nào để thay đổi màu Thanh trong MPandroidCharts dựa trên một số giá trị riêng lẻ được lưu trữ trong sqlite?

Theo tôi hiểu, bạn muốn vẽ các thanh dựa trên bunk nhưng tô màu chúng dựa trên credits . Sử dụng tập dữ liệu thanh tùy chỉnh là cách tiếp cận phù hợp, chỉ cần sửa đổi một chút. Đoạn mã dưới đây lấy những gì bạn đang mô tả.

Những thay đổi tôi đã thực hiện:

  • Không thể chuyển danh sách tên cho BarData , hãy sử dụng công cụ định dạng giá trị trục thay thế
  • Tập dữ liệu thanh tùy chỉnh đã thay đổi để giữ các tín dụng credits mảng. Không chắc liệu getEntryForXIndex của bạn phương thức được định nghĩa ở nơi khác, nhưng nó không có trong mã bạn đã đăng.
  • Đã xóa các cuộc gọi không dùng nữa và cú pháp không hợp lệ (không thể gọi setDescription(""); )

Nếu đây không phải là thứ bạn đang tìm kiếm, hãy cập nhật câu hỏi với chi tiết hơn về những gì bạn đang thấy, v.v. Theo như tôi có thể nói câu hỏi là về biểu đồ chứ không phải về cơ sở dữ liệu SQL.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    BarChart chart = findViewById(R.id.test_chart);

    // Some made up data - replace these with your
    //  queryYdata, queryXdata, and queryZdata methods
    String[] names = new String[]{"foo","bar","fiz","bam","boo"};
    List<Float> credits = new ArrayList<>(Arrays.asList(1f,9f,2.5f,15f,50f));
    float[] bunks = new float[]{10f,15f,16f,20f,5f};

    List<BarEntry> entries = new ArrayList<>();
    for(int i = 0; i < bunks.length; ++i) {
        entries.add(new BarEntry(i, bunks[i]));
    }

    float textSize = 16f;

    MyBarDataset dataSet = new MyBarDataset(entries, "data", credits);
    dataSet.setColors(ContextCompat.getColor(this,R.color.green),
            ContextCompat.getColor(this,R.color.yellow),
            ContextCompat.getColor(this,R.color.red));
    BarData data = new BarData(dataSet);
    data.setDrawValues(false);
    data.setBarWidth(0.9f);

    chart.setData(data);
    chart.setFitBars(true);
    chart.getXAxis().setValueFormatter(new IndexAxisValueFormatter(names));
    chart.getXAxis().setPosition(XAxis.XAxisPosition.BOTTOM);
    chart.getXAxis().setTextSize(textSize);
    chart.getAxisLeft().setTextSize(textSize);
    chart.setExtraBottomOffset(10f);

    chart.getAxisRight().setEnabled(false);
    Description desc = new Description();
    desc.setText("");
    chart.setDescription(desc);
    chart.getLegend().setEnabled(false);
    chart.getXAxis().setDrawGridLines(false);
    chart.getAxisLeft().setDrawGridLines(false);

    chart.invalidate();
}

public class MyBarDataset extends BarDataSet{

    private List<Float> credits;

    MyBarDataset(List<BarEntry> yVals, String label, List<Float> credits) {
        super(yVals, label);
        this.credits = credits;
    }

    @Override
    public int getColor(int index){
        float c = credits.get(index);

        if (c < 8){
            return mColors.get(0);
        }
        else if (c < 13) {
            return mColors.get(1);
        }
        else {
            return mColors.get(2);
        }
    }
}

CHỈNH SỬA: Nói về cơ sở dữ liệu SQL - không gọi queryXDataqueryYData bên trong vòng lặp! Thao tác này sẽ trích xuất toàn bộ mảng dữ liệu mỗi lần lặp lại vòng lặp, sau đó một lần nữa bên trong chính vòng lặp (rất tốn kém). Chỉ cần sử dụng một cái gì đó như thế này để thay thế:

ArrayList<BarEntry> yVals = new ArrayList<>();
ArrayList<Integer> yData = myhelper.queryYdata();
for (int i=0; i<yData.size(); i++){
    yVals.add(new BarEntry(i,yData.get(i)));
}

ArrayList<String> xData = myhelper.queryXdata();



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách đính kèm tệp .db với một android .apk khác

  2. Hiển thị tiến trình trong khi doInbackground

  3. Toán tử SQLite EXCEPT

  4. Không thể sao chép db được tạo trước từ nội dung

  5. Sử dụng khóa chính với WithoutRowID