2013-03-13 26 views
0
@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View row = convertView; 
    ViewHolder holder = null; 

    if (row == null) { 
     LayoutInflater inflater = ((Activity) context).getLayoutInflater(); 
     row = inflater.inflate(layoutResourceId, parent, false); 
     LinearLayout root_view = (LinearLayout) row 
       .findViewById(R.id.list_root_view); 

     int evenRow = position % 2; 
     if (evenRow == 0) { 
      root_view.setBackgroundColor(context.getResources().getColor(
        android.R.color.darker_gray)); 
     } 

     holder = new ViewHolder(); 
     holder.date = (TextView) row.findViewById(R.id.dateTextView); 
     holder.time = (TextView) row.findViewById(R.id.timeTextView); 
     holder.breachNo = (TextView)row.findViewById(R.id.breachNoTextView); 
     holder.fee = (TextView) row.findViewById(R.id.feeTextView); 
     holder.orderCheckBox =CheckBox)row.findViewById(R.id.orderCheckBox); 
     row.setTag(holder); 
    } else { 
     holder = (ViewHolder) row.getTag(); 
    } 

    historyData = arraylist.get(position); 
    holder.date.setText(historyData.getDate() + ""); 
    holder.time.setText(historyData.getTime().toString()); 
    holder.breachNo.setText(historyData.getBreachNo() + ""); 
    holder.fee.setText(historyData.getFee() + ""); 
    holder.orderCheckBox.setEnabled(true); 

    return row; 
} 

在上面的代码中,我遇到了一些问题。我想为我的listview项目设置颜色。 (例如蓝色的奇数行和灰色的偶数行)。在加载活动时,我得到了完美的颜色。问题是滚动我的listview项目颜色随机变化。任何人都可以帮我解决..?Android - 滚动列表视图时出现问题

+0

是否在滚动时出现黑色? – 2013-03-13 06:03:47

+0

不,蓝色和灰色随机出现。 – Arulkannan 2013-03-13 06:07:16

回答

2

getView

集背景颜色,外setTag如果else块。并且是添加其他以及。

if (row == null) { 
     LayoutInflater inflater = ((Activity) context).getLayoutInflater(); 
     row = inflater.inflate(layoutResourceId, parent, false); 
     LinearLayout root_view = (LinearLayout) row 
       .findViewById(R.id.list_root_view); 

     int evenRow = position % 2; 
     if (evenRow == 0) { 
      root_view.setBackgroundColor(context.getResources().getColor(
        android.R.color.darker_gray)); 
     } 

     holder = new ViewHolder(); 
     holder.date = (TextView) row.findViewById(R.id.dateTextView); 
     holder.time = (TextView) row.findViewById(R.id.timeTextView); 
     holder.breachNo = (TextView)row.findViewById(R.id.breachNoTextView); 
     holder.fee = (TextView) row.findViewById(R.id.feeTextView); 
     holder.orderCheckBox =CheckBox)row.findViewById(R.id.orderCheckBox); 
     row.setTag(holder); 
    } else { 
     holder = (ViewHolder) row.getTag(); 
    } 

int evenRow = position % 2; 
     if (evenRow == 0) { 
      root_view.setBackgroundColor(context.getResources().getColor(
        android.R.color.darker_gray)); 
     } else { 
       root_view.setBackgroundColor(context.getResources().getColor(
        android.R.color.blue)); 

} ......... ............

+0

滚动列表查看背景变化像以前一样.. – Arulkannan 2013-03-13 06:27:52

+0

显示您的更新代码。 – 2013-03-13 06:46:21

0

您可以使用

 @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View row = convertView; 
     ViewHolder holder = null; 

     if (row == null) { 
      LayoutInflater inflater = ((Activity) context).getLayoutInflater(); 
      row = inflater.inflate(layoutResourceId, parent, false); 

      holder = new ViewHolder(); 
      holder.root_view = (LinearLayout) row 
      .findViewById(R.id.list_root_view); 
      holder.date = (TextView) row.findViewById(R.id.dateTextView); 
      holder.time = (TextView) row.findViewById(R.id.timeTextView); 
      holder.breachNo = (TextView)row.findViewById(R.id.breachNoTextView); 
      holder.fee = (TextView) row.findViewById(R.id.feeTextView); 
      holder.orderCheckBox =CheckBox)row.findViewById(R.id.orderCheckBox); 
      row.setTag(holder); 
     } else { 
      holder = (ViewHolder) row.getTag(); 
     } 

     int evenRow = position % 2; 
     historyData = arraylist.get(position); 
     holder.date.setText(historyData.getDate() + ""); 
     holder.time.setText(historyData.getTime().toString()); 
     holder.breachNo.setText(historyData.getBreachNo() + ""); 
     holder.fee.setText(historyData.getFee() + ""); 
     holder.orderCheckBox.setEnabled(true); 

     if (evenRow == 0) { 
      holder.root_view.setBackgroundColor(context.getResources().getColor(
         android.R.color.darker_gray)); 
      } 
     else 
      holder.root_view.setBackgroundColor(context.getResources().getColor(
         android.R.color.blue)); 

     return row; 
    } 

也应该添加您的LinearLayoutViewHolder

class ViewHolder{ 
     LinearLayout root_view; 
     ... 
     ... 
     ... 
    }