2 回答

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊
首先,您不必notifyDataSetChanged每次在函數(shù)中設(shè)置背景顏色時(shí)都調(diào)用onBindViewHolder。
其次,您需要在函數(shù)中實(shí)現(xiàn)背景顏色的所有條件onBindViewHolder。
我想建議如下實(shí)施。
@Override
public void onBindViewHolder(@NonNull GameViewHolder holder, int position) {
holder.mTextPar.setText(currentItem.getText2());
Integer parFromActivity = -1;
if(ActivityGame.mHoleNm != null)
parFromActivity = Integer.parseInt(ActivityGame.mHoleNm.getText().toString());
/** If persons par number is smaller than course par number, then change persons par number background to blue **/
if (Integer.parseInt(holder.mTextPar.getText().toString()) < parFromActivity) {
holder.mTextPar.setBackgroundColor(Color.parseColor("#255eba"));
// notifyDataSetChanged(); // We do not need this line
} else if (Integer.parseInt(holder.mTextPar.getText().toString()) > parFromActivity) {
holder.mTextPar.setBackgroundColor(Color.parseColor("#800080")); // purple maybe
} else {
holder.mTextPar.setBackgroundColor(Color.parseColor("#D3D3D3"));
}
}
希望有幫助!
編輯:
我主要假設(shè)從活動(dòng)中引用的視圖是null在您從適配器中使用它時(shí)。如果是這種情況,那么您需要以其他方式將值傳遞給適配器。
由于您已經(jīng)發(fā)現(xiàn)了問(wèn)題,因此我也將其包含在我的回答中。該視圖不是唯一的Integer。因此,我想Integer.parseInt(ActivityGame.mHoleNm.getText().toString()是在扔?xùn)|西ParseException。

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
您的活動(dòng)中不應(yīng)該有靜態(tài)小部件。相反,您應(yīng)該將 par 編號(hào)作為參數(shù)傳遞給適配器構(gòu)造函數(shù),這樣您就不必在活動(dòng)中聲明靜態(tài)方法來(lái)獲取 par 值。
如果 par 值可能會(huì)實(shí)時(shí)更改,則向您的適配器添加一個(gè)方法以獲取新的 par 值,然后刷新適配器項(xiàng)目。只要面值發(fā)生變化,就會(huì)從活動(dòng)中調(diào)用該方法。
添加回答
舉報(bào)