我有这个应用程序,我想在自定义适配器中的某些文本视图上保持点击行为(更改文本颜色),但是当我在列表视图中添加另一行时,更改的颜色消失了!有关我在说什么的更多信息,请参见下面的代码(感谢您的任何提前帮助):
public View getView(int position, View row, ViewGroup parent) {
itemHolder holder = null;
if (row == null) {
LayoutInflater inflater = ((Activity) mContext).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new itemHolder();
holder.txtNewWord = row.findViewById(R.id.tv_guess_word);
holder.txtRightLetters = row.findViewById(R.id.tv_num_right_letters);
holder.txtRightPlace = row.findViewById(R.id.tv_num_right_place);
holder.txtLetter1 = row.findViewById(R.id.tv_letter1);
holder.txtLetter2 = row.findViewById(R.id.tv_letter2);
holder.txtLetter3 = row.findViewById(R.id.tv_letter3);
holder.txtLetter4 = row.findViewById(R.id.tv_letter4);
holder.txtLetter5 = row.findViewById(R.id.tv_letter5);
row.setTag(holder);
} else {
holder = (itemHolder) row.getTag();
}
Word_Items newWordRow = words.get(position);
holder.txtNewWord.setText(newWordRow.getNewWord());
holder.txtRightLetters.setText(newWordRow.getRightLetters());
holder.txtRightPlace.setText(newWordRow.getRightPlace());
holder.txtLetter1.setText(newWordRow.getLetter1());
holder.txtLetter2.setText(newWordRow.getLetter2());
holder.txtLetter3.setText(newWordRow.getLetter3());
holder.txtLetter4.setText(newWordRow.getLetter4());
holder.txtLetter5.setText(newWordRow.getLetter5());
//在项目上单击
final itemHolder finalHolder = holder;
holder.txtLetter1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
clicks1++;
switch (clicks1) {
case 1:
finalHolder.txtLetter1.setTextColor(Color.RED);
break;
case 2:
finalHolder.txtLetter1.setTextColor(Color.GREEN);
break;
case 3: {
finalHolder.txtLetter1.setTextColor(Color.BLACK);
clicks1 = 0;
}
break;
}
}
});
holder.txtLetter2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
clicks2++;
switch (clicks2) {
case 1:
finalHolder.txtLetter2.setTextColor(Color.RED);
break;
case 2:
finalHolder.txtLetter2.setTextColor(Color.GREEN);
break;
case 3: {
finalHolder.txtLetter2.setTextColor(Color.BLACK);
clicks2 = 0;
}
break;
}
}
});
holder.txtLetter3.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
clicks3++;
switch (clicks3) {
case 1:
finalHolder.txtLetter3.setTextColor(Color.RED);
break;
case 2:
finalHolder.txtLetter3.setTextColor(Color.GREEN);
break;
case 3: {
finalHolder.txtLetter3.setTextColor(Color.BLACK);
clicks3 = 0;
}
break;
}
}
});
holder.txtLetter4.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
clicks4++;
switch (clicks4) {
case 1:
finalHolder.txtLetter4.setTextColor(Color.RED);
break;
case 2:
finalHolder.txtLetter4.setTextColor(Color.GREEN);
break;
case 3: {
finalHolder.txtLetter4.setTextColor(Color.BLACK);
clicks4 = 0;
}
break;
}
}
});
holder.txtLetter5.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
clicks5++;
switch (clicks5) {
case 1:
finalHolder.txtLetter5.setTextColor(Color.RED);
break;
case 2:
finalHolder.txtLetter5.setTextColor(Color.GREEN);
break;
case 3: {
finalHolder.txtLetter5.setTextColor(Color.BLACK);
clicks5 = 0;
}
break;
}
}
});
return row;
}
如您所见,我想通过单击列表视图的行项目来更改和保存文本视图的颜色更改,但是正如预期的那样,通过再添加一行它不保存值! 我该怎么办?