如何知道RecyclerView中的新数据是否大于最近更新的数据

时间:2019-09-06 06:17:14

标签: android android-recyclerview

我正在创建一个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)
}
}

2 个答案:

答案 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,但这非常昂贵。如果您的清单很小,这可能是一种快速的方法。