2014-12-08 4 views
0

안녕하십니까.ListView의 페인트 항목

항목 목록보기가 있는데 그 중 하나를 선택하면 세부 정보가 표시됩니다. 액세스 된 항목의 배경색을 변경해야합니다. 이를 위해 , 나는 당신의 배경 색상을 선택한 항목을 가지고 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); 

     } 
    }); 

에 대한 값의 intentificacion을 반환 항목에 액세스 할 경우 다음 나는 어댑터를 비교하고 변경 :

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

ListView가 목록을 스크롤하여 항목을 재생하는 ListView가 일련의 메모리를 사용하지 않도록하기 위해 getView 메소드에 문제가 있습니다. 재사용 된 항목의 배경으로 인해 색상이 사용됩니다 너는로 바뀐다. 따라서이 문제를 방지하려면 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가 호출 될 때 그것은 배경이 다른 재활용 된 항목을위한 것입니다. –