MPAndroidChart и DataBinding - PullRequest
       9

MPAndroidChart и DataBinding

0 голосов
/ 27 августа 2018

У меня есть фрагмент, где у меня есть MPAndroidChart и textViews. Я понимаю, что MPAndroidChart не поддерживает привязку данных, как указано здесь: https://github.com/PhilJay/MPAndroidChart/issues/1382

Сейчас я использую ButterKnife, чтобы найти свои представления, но хочу перейти на привязку данных. Мне было интересно, поскольку MPAndroidChart не поддерживает привязку данных, возможно ли использовать привязку данных и Butterknife в одном фрагменте?

Butterknife для MPAndroidChart и DataBinding для моих текстовых обзоров.

Ответы [ 4 ]

0 голосов
/ 20 февраля 2019

Да, это возможно.

layout -tag должен в xml-файле.

<layout >
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <com.github.mikephil.charting.charts.LineChart
                android:id="@+id/lineChart"
                android:layout_width="70dp"
                android:layout_height="60dp"
                android:orientation="vertical">
    <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="ok"
            android:id="@+id/button1"
            android:background="#0058b6" />


    </LinearLayout>

</layout>

В действии,

ActivityMainBinding binding; // Declaration

binding = DataBindingUtil.setContentView(this, R.layout.activity_main);

binding.lineChart.setVisibility(Visibility.VISIBLE);
binding.button1.setVisibility(Visibility.VISIBLE);

binding.button1.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        // Perform action on click
    }
});
0 голосов
/ 18 сентября 2018

Вы можете использовать PieChart с привязкой данных, используя следующий код 1. Свяжите свой макет с fragmnet

setPieChart(fragmentDashboardBinding.piechart);

Объявить глобальную переменную круговой диаграммы

private PieChart piechart;   
    public void setPieChart(PieChart Pie_chart) {
            this.piechart = Pie_chart;
        }

И укажите свои данные в форме обновления формы PieChart

@Override
    public void update(Observable observable, Object arg) {

        DashboardViewModel dashboardViewModel = (DashboardViewModel) observable;
        drivingScore = dashboardViewModel.getDrivingScore();
        LoadPieChart(drivingScore);
    }

private void LoadPieChart(DrivingScore drivingScore) {
//Do any thing with your piechart
}
0 голосов
/ 18 сентября 2018

Можно использовать MPAndroidChart с привязкой данных.

Создание настраиваемого адаптера привязки:

@BindingAdapter("android:setPieData")
fun setPieData(view: PieChart, data: List<SomeModel>?) {
val entries = mutableListOf<PieEntry>()

data.forEach { sweet ->
    // Fill the entires list
}
// Set the entries, decorate the pie  
}

Тогда в xml:

<com.github.mikephil.charting.charts.PieChart
            android:id="@+id/consumed_data_sweets_rating_chart"
            android:layout_width="match_parent"
            android:layout_height="@dimen/chart_height"
            android:layout_gravity="center"
android:layout_margin="@dimen/material_component_cards_top_and_bottom_padding"
            android:setPieData="@{viewmodel.pieData}"

Где viewmodel.pieData - это LiveData<List<SomeModel>> models, переданное в классе ViewModel.

Таким образом, в основном вы должны использовать пользовательские адаптеры привязки данных для любых свойств диаграмм, которые вы хотите установить.

Ссылка на мой проект, найдите класс ChartBindingAdapters, чтобы увидеть мои пользовательские адаптеры.

0 голосов
/ 18 сентября 2018

Да, это возможно,

Butterknife и Databinding - две разные вещи.

Но зачем тебе нож для масла. Смотри ниже

<com.github.mikephil.charting.charts.PieChart
    android:id="@+id/pieChart"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

Вы можете получить доступ к этому полю, как это

ActivityMainBinding binding;
binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
binding.pieChart.setVisibility(Visibility.INVISIBLE)

Так что вам не нужен нож, когда вы используете привязку данных.

...