2014-12-08 3 views
0

Доброе утро.элемент краски в ListView

У меня есть ListView записей, где, выбрав один из них, показывает деталь. Мне нужно изменить цвет фона записей, к которым обращались. Для этого я беру выбранный элемент и возвращает значение intentificacion для 1.

lv_entries.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 
      Entry entry = (Entry) parent.getItemAtPosition(position); 
      entry.setSeleccion(1); 

      Intent intent = new Intent(ListEntriesActivity.this, 
        EntryDetailActivity.class); 
      intent.putExtra(Keys.ENTRY, entry); 
      startActivity(intent); 

     } 
    }); 

Затем я сравниваю адаптер, если запись была доступна и изменить цвет фона:

public View getView(int position, View convertView, ViewGroup parent) { 
    Entry entry = getItem(position); 
    ViewHolder viewHolder; 

    if (convertView == null) { 
     LayoutInflater inflater = LayoutInflater.from(getContext()); 
     convertView = inflater.inflate(R.layout.activity_list_entries, 
       parent, false); 
     viewHolder = new ViewHolder(); 
     viewHolder.tv_entry_title = (TextView) convertView 
       .findViewById(R.id.tv_list_titulo); 
     viewHolder.tv_entry_link = (TextView) convertView 
       .findViewById(R.id.tv_list_link); 
     convertView.setTag(viewHolder); 
    } else { 
     viewHolder = (ViewHolder) convertView.getTag(); 
    } 
    if(entry.getSeleccion()==1){ 
     convertView.setBackgroundColor(R.color.azul); 
    } 
    viewHolder.tv_entry_title.setText(entry.getTitle()); 
    viewHolder.tv_entry_link.setText(entry.getLink()); 


    return convertView; 
} 

проблема что в дополнение к рисованию выбранного элемента, когда я иду по списку, будут рисовать другие предметы.

Кто-то может мне помочь?

извините за мой английский.

ответ

0

Ваша проблема заключается в вашем методе getView, чтобы ListView не использовал пучок памяти ListView. Перерабатывает свои элементы, в которых прокрутка списка приведет к тому, что фоны повторно используемых элементов будут использовать цвет вы меняете. Поэтому, чтобы остановить это, вы должны изменить getView следующим образом:

public View getView(int position, View convertView, ViewGroup parent) { 
    Entry entry = getItem(position); 
    ViewHolder viewHolder; 

if (convertView == null) { 
    LayoutInflater inflater = LayoutInflater.from(getContext()); 
    convertView = inflater.inflate(R.layout.activity_list_entries, 
      parent, false); 
    viewHolder = new ViewHolder(); 
    viewHolder.tv_entry_title = (TextView) convertView 
      .findViewById(R.id.tv_list_titulo); 
    viewHolder.tv_entry_link = (TextView) convertView 
      .findViewById(R.id.tv_list_link); 
    convertView.setTag(viewHolder); 
} else { 
    viewHolder = (ViewHolder) convertView.getTag(); 
} 
if(entry.getSeleccion()==1){ 
    convertView.setBackgroundColor(R.color.azul); 
}else{ 
    // Use your default color here 
    convertView.setBackgroundColor(android.R.color.white); 
} 
viewHolder.tv_entry_title.setText(entry.getTitle()); 
viewHolder.tv_entry_link.setText(entry.getLink()); 


return convertView; 
} 
+0

Спасибо. Это сработало – ferpahud

+0

Нет проблем, это опять же потому, что элементы списка списка переработаны. Поэтому, когда вызывался getView, это было для переработанного элемента с другим фоном. –

Смежные вопросы