我正在创建一个Android应用并每秒更新一次数据,一切正常,但是如果我的数据大于上次更新的数据,则必须在更改位置更改RecyclerView的自定义适配器的TextView的背景颜色。
如何知道当前数据大于最近更新的数据。 例如,货币价格在一段时间后为44.50,将为44.52。
//Adapter Class
class AbcAdapter(
private val context: Context,
val list: List<DataModal>
) : RecyclerView.Adapter<AbcAdapter.ViewHolder>(){
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder
{
val v = LayoutInflater.from(context).inflate(R.layout.ax_adapter, parent, false)
return ViewHolder(v)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val ax = list[position]
holder.textSymbol.text = mcx.symbol
holder.textBuy.text = mcx.buy
holder.textChange.text = mcx.change
if (holder.textChange.text.toString().toFloat() > 0) {
holder.textChange.setTextColor(Color.parseColor("#008000"))
} else if (holder.textChange.text.toString().toFloat() < 0) {
holder.textChange.setTextColor(Color.parseColor("#FF0000"))
}
}
override fun getItemCount(): Int {
return list.size
}
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
var textSymbol: TextView = itemView.findViewById(R.id.SymbolLabel)
var textBuy: TextView = itemView.findViewById(R.id.BuyPrice)
var textChange: TextView = itemView.findViewById(R.id.ChangePrice)
}
}
答案 0 :(得分:0)
class MyListAdapter(
private val context: Activity,
private val symbol: ArrayList<String>,
private val buy: ArrayList<String>
) : ArrayAdapter<String>(context, R.layout.custom_list, symbol) {
@SuppressLint("ViewHolder", "InflateParams")
override fun getView(position: Int, view: View?, parent: ViewGroup): View
{
val inflater = context.layoutInflater
val rowView = inflater.inflate(R.layout.custom_list, null, true)
val symbolText = rowView.findViewById(R.id.SymbolLabel) as TextView
val buyText = rowView.findViewById(R.id.BuyPrice) as TextView
if(position != 0){
//check current position data is greater than the previous data
if(buy[position] > buy[position - 1]){
//if it is greater than previous do the logics here...
}
}
symbolText.text = symbol[position]
buyText.text = buy[position]
return rowView
}
}
答案 1 :(得分:0)
if/then/fi
使您可以更精细地控制每个项目。
因此,我强烈建议您转至RecyclerView并实现DiffUtils
,它将在内部调用RecyclerView
。
实施RecyclerView非常容易-如果您不想使用DiffUtils,则可以直接直接调用notifydatasetchanged
,但这非常昂贵。如果您的清单很小,这可能是一种快速的方法。