Как я могу изменить формат чисел для информации внутри моего просмотра карт? - PullRequest
0 голосов
/ 14 апреля 2020

Я заканчиваю проект для своего класса в колледже, но я застрял в том, как изменить формат информации в моем представлении карты. Мне нужно, чтобы оно было в формате валюты, но в десятичной форме. Я пробовал несколько вещей, но это не сработало.

вот код в моем адаптере:

enter image description here

class MyAdapter(private val myDataset: ArrayList<Fillup>) :
    RecyclerView.Adapter<MyAdapter.MyViewHolder>()
{

    class MyViewHolder(val cardView: CardView) : RecyclerView.ViewHolder(cardView) {
        val textGallons = itemView.findViewById<TextView>(R.id.textGallons)
        val textCost = itemView.findViewById<TextView>(R.id.textCost)
        val textMiles = itemView.findViewById<TextView>(R.id.textMiles)
        val textDate =itemView.findViewById<TextView>(R.id.textDate)
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyAdapter.MyViewHolder {
        val aCardView = LayoutInflater.from(parent.context).inflate(R.layout.card_one, parent, false) as CardView
        return MyViewHolder(aCardView)
    }

    override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
        holder.textGallons.text = myDataset[position].gallons.toString()
        holder.textCost.text = myDataset[position].cost.toString() //This is what needs to change
        holder.textMiles.text =  myDataset[position].odo.toString()
        holder.textDate.text = myDataset[position].date.toString()
    }

    override fun getItemCount() = myDataset.size
}

Ответы [ 2 ]

0 голосов
/ 14 апреля 2020

Самый простой способ получить символ валюты на выходе - просто добавить его:

holder.textCost.text = "$" + myDataset[position].cost.toString()

Для выполнения домашнего задания этого, вероятно, достаточно. Однако в среде «реального мира», где ваше приложение используется во многих странах, вы должны использовать объект Locale, чтобы иметь возможность форматировать с соответствующим символом валюты.

0 голосов
/ 14 апреля 2020

Поскольку вы используете валюту, вы можете округлить ее, используя следующие математические функции.

float i = 3.2f;
float j = 3.8f;
Math.round(i); // output =3, since the decimal point is below 5
Math.round(j); // output = 4, since the decimal point is above 5

float k = 7.3f;
Math.ceil(k); // output = 8
Math.floor(k); // output = 7

Таким образом, ваша кодовая точка зрения Математические функции, которые вам подойдут, если вы хотите округлить ее в пошаговый способ. Ваш код будет выглядеть как-то -

override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
        holder.textGallons.text = myDataset[position].gallons.toString()
        holder.textCost.text = "$"+ String.format("%.2f", myDataset[position].cost) //Check this 
        holder.textMiles.text =  myDataset[position].odo.toString()
        holder.textDate.text = myDataset[position].date.toString()
    }

Или вы можете использовать другие математические функции в зависимости от ваших требований.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...