除非我点击视图,否则 PieChart 不会显示来自 Firebase 的内容

问题描述

我正在使用 MPAndroidChart 中的 PieChart,并通过 Firebase 获取我的元素。显示图表内容没有问题,但只有当我点击 PieChart 视图时才有意义。

XML

<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >


    <com.github.mikephil.charting.charts.PieChart
        android:id="@+id/pieChartTest"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        />
</androidx.constraintlayout.widget.ConstraintLayout>

活动

class TestActivity : AppCompatActivity() {

    val mAuth = FirebaseAuth.getInstance().currentUser!!.uid
    val ref = FirebaseDatabase.getInstance().reference.child("users").child(mAuth)
    var angry = 0f
    var happy = 0f
    var sad = 0f
    var calm = 0f

    lateinit var pieChart : PieChart
    lateinit var mood : ArrayList<PieEntry>
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_test)
        pieChart = findViewById(R.id.pieChartTest)


        ref.child("chart").addListenerForSingleValueEvent(object : ValueEventListener {
            override fun onCancelled(error: DatabaseError) {}
            override fun onDataChange(snapshot: DataSnapshot) {
                mood = arraylistof()
                val map = snapshot.value as Map<*,*>
                angry = map["angry"].toString().toFloat()
                happy = map["happy"].toString().toFloat()
                sad = map["sad"].toString().toFloat()
                calm = map["calm"].toString().toFloat()

                mood = arraylistof(
                    PieEntry(angry,"angry"),PieEntry(happy,"Happy"),PieEntry(sad,"Sad"),PieEntry(calm,"Calm")
                )
                val pieDataSet = PieDataSet(mood,"").apply {
                    setColors(ColorTemplate.COLORFUL_COLORS,200)
                    valueTextColor = Color.BLACK
                    valueTextSize = 16f
                }

                val pieData = PieData(pieDataSet)
                pieChart.apply{
                    data = pieData
                    description.isEnabled = false
                    centerText = getText(R.string.mood).toString()
                    animate()
                }
            }
    })
}


}

点击前 https://i.stack.imgur.com/afVM7.png

点击后 https://i.stack.imgur.com/DJIpQ.png

我通常对 PieChart 没有任何问题,但这是我第一次想通过 addListenerForSingleValueEvent 检索变量并将它们推送到 PieChart。如何创建活动并显示图表内容而无需单击?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...