[英]custom DefaultTableCellRenderer not changing the background color of row on jTable
[英]Changing custom List view row background color
我有一個帶有自定義列表視圖的應用程序,該列表視圖具有textview和image(delete),當我單擊該圖像時,該行的背景色應更改,而當我再次單擊同一圖像時,其背景應更改為默認顏色。 我可以更改背景顏色,但是只能更改一次,我不能更改兩次,我的意思是我無法恢復為默認顏色。
這是我的代碼...
CustomListView.java
public View getView(final int position, View convertView, ViewGroup parent) {
holder = null;
DataFields rowItems = (DataFields) getItem(position);
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = inflater.inflate(R.layout.home_field_row, null);
holder = new ViewHolder();
holder.dataFields = items.get(position);
holder.mName = (TextView) convertView
.findViewById(R.id.hmFieldName);
holder.mDeleteImage = (ImageView) convertView
.findViewById(R.id.hmFieldDeleteImage);
holder.mDeleteCheck = (ImageView) convertView
.findViewById(R.id.hmFieldDeleteCheck);
holder.mDeleteMainRL = (RelativeLayout) convertView
.findViewById(R.id.hmFieldMainRL);
holder.mDeleteImage.setTag(position);
final View clickView = convertView;
holder.mDeleteImage
.setOnClickListener(new ImageView.OnClickListener() {
@Override
public void onClick(View v) {
int status = 0;
HomeActivity.mDeleteFieldLL
.setVisibility(View.VISIBLE);
HomeActivity.hmAddField
.setVisibility(View.INVISIBLE);
holder.dataFields = items.get(position);
if (mFieldId.size() == 0) {
mFieldId.add(holder.dataFields);
++count;
HomeActivity.hmDeleteSelected
.setText("Delete (" + count + ")");
clickView.setBackgroundColor(R.color.list_row_bg);
} else {
for (int i = 0; i < mFieldId.size(); i++) {
if (mFieldId.get(i).getId() == holder.dataFields
.getId()) {
status = 1;
}
}
if (status == 0) {
mFieldId.add(holder.dataFields);
++count;
HomeActivity.hmDeleteSelected
.setText("Delete (" + count + ")");
clickView.setBackgroundColor(R.color.list_row_bg);
} else if (status == 1) {
mFieldId.remove(holder.dataFields);
--count;
if (count < 0)
count = 0;
clickView.setBackgroundColor(R.color.list_row_bg_default); //doesnt changes back to default color
HomeActivity.hmDeleteSelected
.setText("Delete (" + count + ")");
}
}
}
});
convertView.setTag(holder);
}
else {
holder = (ViewHolder) convertView.getTag();
}
holder.mName.setText(rowItems.getName());
return convertView;
}
還有一個問題是,背景色不是我在color.xml中提到的顏色,我通過放置不同的顏色進行了測試,但是當我單擊圖像時,該顏色僅變為一種特定的顏色。
因此,為了簡單起見,我需要在單擊圖像時更改listview行的背景顏色,並在再次單擊它時恢復為默認顏色。
任何幫助都將不勝感激。 謝謝 !
我認為顏色可能已經更改,但是您在setBackgroundColor()上犯了錯誤,因此似乎顏色沒有更改。
對於顏色問題,請嘗試使用此代碼
clickView.setBackgroundColor(context.getResources().getColor(R.color.list_row_bg));
實例化適配器時,您必須傳遞Context對象。
或者您可以使用類似
layout.setBackgroundColor(0xFFFFFFFF);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.