Проблема с повторением цветов в ListView? - PullRequest
0 голосов
/ 10 июня 2011

Я использую следующий код для установки 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 Ответ

1 голос
/ 10 июня 2011
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 только перерабатывает вид внутри него, поэтому вам придется взять на себя обязательство вернуть его в нормальное состояние.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...