2017-01-21 12 views
2

@BindingAdapterを使用して作業しています。私はそれを修正する方法の明確なパスが表示されない珍しい問題を取得しています。バインディングアダプタの無効な要素の問題

スタックトレース

@BindingAdapter on invalid element: setPieChartData(com.github.mikephil.charting.charts.PieChart,java.util.HashMap<java.lang.String,java.lang.Integer>,java.lang.String) 
    at com.sun.tools.javac.main.Main.compile(Main.java:553) 
    at com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:129) 
    at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:138) 
    at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:46) 
    at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:33) 
    at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.delegateAndHandleErrors(NormalizingJavaCompiler.java:104) 
    at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:53) 
    at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:38) 
    at org.gradle.api.internal.tasks.compile.CleaningJavaCompilerSupport.execute(CleaningJavaCompilerSupport.java:35) 
    at org.gradle.api.internal.tasks.compile.CleaningJavaCompilerSupport.execute(CleaningJavaCompilerSupport.java:25) 
    at org.gradle.api.tasks.compile.JavaCompile.performCompilation(JavaCompile.java:206) 
    at org.gradle.api.tasks.compile.JavaCompile.compile(JavaCompile.java:187) 
    at org.gradle.api.tasks.compile.JavaCompile.compile(JavaCompile.java:130) 
    at com.android.build.gradle.tasks.factory.AndroidJavaCompile.compile(AndroidJavaCompile.java:49) 
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73) 
    at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$IncrementalTaskAction.doExecute(DefaultTaskClassInfoStore.java:163) 
    at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:134) 
    at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:123) 
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:95) 
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:76) 

My機能

@BindingAdapter({"bind:alternatives","bind:topic"}) 
private static void setPieChartData(PieChart pieChart, HashMap<String,Integer> alternatives, String topic) { 
    PieChartHelper.initializePieChart(pieChart,alternatives,topic); 
} 

私のXMLレイアウト

 <com.github.mikephil.charting.charts.PieChart 
     android:id="@+id/pie_chart" 
     android:layout_width="match_parent" 
     android:layout_height="300dp" 
     app:alternatives="@{gameFeedItem.alternatives}" 
     app:topic="@{gameFeedItem.topic}"/> 

奇妙事は私が他のビューのために同様のソリューションを行っているということです。しかしこれは完全なカスタムビューである唯一のものです。だから、PieChartクラスはこのようにデータバインディングをサポートしていないのでしょうか?

使用されるライブラリはで見つけることができますhttps://github.com/PhilJay/MPAndroidChart

答えて

7

あなたBindingAdapterはprivate方法です。それを作成するpublic

@BindingAdapter({"bind:alternatives","bind:topic"}) 
public static void setPieChartData(PieChart pieChart, HashMap<String,Integer> alternatives, String topic) { 
    PieChartHelper.initializePieChart(pieChart,alternatives,topic); 
} 
+0

今は気づいた。遅い夜のプログラミングは私にハハを得た。ヘッドアップをありがとう –