2011-06-10 96 views
0

我使用下面的代碼來設置ListView,數據和按鈕設置正確,當我滾動也沒有問題的數據重複,但當我滾動顏色設置爲所有文本字段,我該如何解決它?。ListView顏色重複問題?

private class EfficientAdapter extends BaseAdapter { 


public EfficientAdapter(Context context) { 
    mInflater = LayoutInflater.from(context); 

} 

public int getCount() { 
    return count; 
} 

public Object getItem(int position) { 
    return position; 
} 

public long getItemId(int position) { 
    return position; 
} 

public View getView(final int position, View convertView, ViewGroup parent) { 
    System.gc(); 
    ViewHolder holder; 

    if (convertView == null) { 
     convertView = mInflater.inflate(R.layout.albumlist, null); 
     holder = new ViewHolder(); 
     holder.albumName = (TextView) convertView.findViewById(R.id.albumDetails); 
     holder.delete=(Button)convertView.findViewById(R.id.deletealbum); 
     holder.share=(Button)convertView.findViewById(R.id.shareProject); 
     holder.preview=(Button)convertView.findViewById(R.id.prevProject); 

     convertView.setTag(holder); 
    } 
    else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    holder.albumName.setText(albumData[position][0]); 
    if((albumData[position][2].length()==0)){ 
     holder.albumName.setTextColor(Color.RED); 

    } 
    holder.delete.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      // Perform action on click 

      ..... 


    }); 
    holder.preview.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      ...... 

     } 

    }); 
    holder.share.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      ...... 
    }); 
    return convertView; 

}

回答

1
holder.albumName.setTextColor(Color.BLACK); //or whatever the original color is 

holder.albumName.setText(albumData[position][0]); 
if((albumData[position][2].length()==0)){ 
    holder.albumName.setTextColor(Color.RED); 

} 

你應該首先重置視圖原來的顏色,你讓你的舉動之前。 ListView只是回收它裏面的視圖,所以你必須把它設置回正常的負擔。