2012-09-18 6 views
2

나는 ListView에서 일하고 있으며 setBackgroundColor 안에 onItemLongClickListener을 선택한 항목에 사용했습니다. 내 문제는이 일을하고 스크롤 할 때 보이지 않는 자식의 색을 ListView으로 설정한다는 것입니다. 그것을 어떻게 풀 수 있을까요?ListView onItemLongClickListener가 제대로 작동하지 않습니다.

+1

을, 당신은 태그에서 convertview을받을 수 있나요? 거기에 설정 한 배경색이 유지 될 수 있습니까? – ePeace

+0

관련 코드를 게시하십시오. 스크 롤링 시간이 – adneal

+0

일 때 색상이 보이지 않습니까? –

답변

1

이것은 사용자가 스크롤 할 때 listview가보기를 다시 만들지 않기 위해 이전보기를 사용하기 때문에 발생합니다.

사실 모든 adapterView 클래스에 공통적입니다.

이 작업을 처리하려면 뷰의 위치 상태 (원하는 ArrayList를 사용하여)를 저장하고 getView에서 위치가 목록에이 배경으로 설정되어 있으면 다음을 사용하십시오. 그렇지 않으면 기본 배경을 사용하십시오.

listview에 대한 자세한 내용은 API를 읽거나 비디오 "the world of listView"을 시청하십시오. 어댑터 클래스에서

0

:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    if(convertView == null) { 
     convertView = inflater.inflate(...); 
    } 
    convertView.setBackgroundColor(defaultcolor); 
    ... 
} 

이 그러나 그 뷰를 다시 그려야 할 때 onlongclicklistener에서 설정 한 배경을 덮어 쓰게됩니다. 따라서 클릭 된 항목의 위치 목록을 유지하여 getView 메소드에서이를 설정할 수 있습니다.

2

당신의 XML에 다음과 같은 속성을 넣어보십시오 : 당신의 listadapter 내부

`

<ListView  
     android:dividerHeight="1dp" 
     android:scrollingCache="false" > 

`

관련 문제