Как я могу получить общую сумму калорий из моей базы данных в Android Studio?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу получить общую сумму калорий из моей базы данных в Android Studio?

Сообщение Anonymous »

Вот код на Kotlin.
Мой DAO:

Код: Выделить всё

@Dao
interface DataInputUserDAO {

// Will ignore if new data is the same
@Insert(onConflict = OnConflictStrategy.IGNORE)
// can be started, paused, and resume
suspend fun addData(dataInput : DataInputUser)

@Query("DELETE FROM user_table WHERE id is :dataID")
suspend fun deleteData(dataID: Int)

@Update
suspend fun updateData (dataInput: DataInputUser)

// Select everything from DataInputUser
@Query("SELECT * FROM user_table ORDER BY id ASC")
//Return every item in the database
fun readData() : LiveData

//Sum Carbs
@Query ("SELECT SUM(amountFood) FROM user_table WHERE typeFood ='Carbs' ")
fun sumCarbs(): LiveData
Моя база данных

Код: Выделить всё

@Parcelize
@Entity(tableName = "user_table")
data class DataInputUser(
var nameFood: String,
var typeFood: String,
var amountFood: Int,
@PrimaryKey(autoGenerate = true)
var id : Int
) : Parcelable
Фрагмент, где я хочу показать общее количество калорий

Код: Выделить всё

class ListFragment : Fragment() {

//creating a private writable property called listBinding
private var listBinding: FragmentListBinding? = null
// This property is only valid between onCreateView and
// onDestroyView.
private val binding get() = listBinding!!
private lateinit var myUserViewModel : UserViewModel

// to get the Argument from SafeArg
private val args by navArgs()

// Will be used to get the calories
// Array list is used so we can sum it
//private lateinit var amountFoodData : ArrayList

override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {

//creates an instance of the binding class for the fragment to use.
listBinding = FragmentListBinding.inflate(inflater, container, false)
val view = binding.root

//Making the Recycler View
val myAdapter = adapter()
val recyclerView = binding.recyclerView
recyclerView.adapter = myAdapter
recyclerView.layoutManager = LinearLayoutManager(requireContext())

// Showing the number
//updateNumber()

// ViewModelProvider is a utility class that provides ViewModel instances.
myUserViewModel = ViewModelProvider(this).get(UserViewModel::class.java)
// To observe Live Data and Changes from DAtaBase
// Passing data to Adapter
myUserViewModel.readAll.observe(viewLifecycleOwner, Observer { DataInputUser->
myAdapter.updateRecyclerView(DataInputUser)
})

// Basically FindViewById
binding.actionButton.setOnClickListener{
findNavController().navigate(R.id.action_listFragment_to_addFragment)
}

// Return the view that will pop up
return view
}

override fun onDestroy(){
// To destory binding and prevent memory leak
listBinding = null
super.onDestroy()
}

override fun onDestroyView() {
super.onDestroyView()
listBinding = null
}
}
Помогите, пожалуйста. Я не знаю, с чего начать.
Считаете ли вы, что SQL, который я использую для получения суммы из базы данных, неправильный? ? Как я могу реализовать эту функцию из DAO в моем фрагментеActivity?
Вот код (вы можете увидеть его в файле DAO):

Код: Выделить всё

@Query ("SELECT SUM(amountFood) FROM user_table WHERE typeFood ='Carbs' ")
fun sumCarbs(): LiveData
Я ценю ваше время и помощь.

Подробнее здесь: https://stackoverflow.com/questions/793 ... -in-androi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»