2012-07-23 2 views
1

나는 listview에서 선택한 행의 배경색을 변경하려고하는데 할 수있다. 하지만 다른 행을 클릭하면 이전에 선택한 선택의 배경색이 변경되지 않습니다. 내가 이전에 선택한 행의 위치를 ​​가지고, 아무도 내가 이전에 선택한 행의 배경색을 어떻게 바꿀 수 있습니까?사용자 지정 목록에서 선택한 행의 배경색을 설정하는 방법은 무엇입니까?

+0

코드를 게시하십시오. –

답변

1

는 많은 ListItems 방금 어댑터에 has been clicked-color을 표시하기위한 코드를 삽입 한 후 adapter.notifyDatasetChanged();

+0

나는 그것을 시도했지만이 문제에 대한 적절한 해결책을 제공하지 않습니다. 다른 도움 ?? –

+0

모델이 선택 표시되어있는 경우 다른 색상으로 표시하도록 어댑터를 업데이트 했습니까? 목록에 다른 "배경색"또는 가장 최근에 클릭 한 "확인 된"항목을 모두 표시 하시겠습니까? – Slickelito

+0

나는 그것을 시도하고 그것이 작동합니다. 그러나 목록을 스크롤 한 다음 이전 위치로 돌아가서 선택한 행 색상이 사라질 때. 또한 notifydatasetchanged()는 스크롤이 일어 났을 때 작동합니다. 그래서 plz이 쿼리에서 나를 분명히합니다. –

0

귀하의 활동에 Your_List Object의 setOnItemClickListener를 사용하십시오.

참조 데모 코드 :

list1.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> adapter, View v, int position, long id) { 
       v.setBackgroundColor(Color.BLUE); // <--- Use color you like here 
      //^this v gives current row. 
    } 
}); 

이 할 것 배경색이 영원히 행에 대해 변경되었습니다. 당신이 추적하고 업데이트하는 경우

+0

그걸 알고 있지만 다른 행이 선택되면 행의 이전 배경색을 되 찾으려합니다. 이 문제에 대한 다른 해결책이 있다면 알려주세요. –

+0

질문을 편집하고 코드를 게시하십시오. –

1

난 당신이 보면이 쉬울 거라고 생각 호출 할 수있는 모델의 상태를 클릭 다른 방법으로.

현재 논리는 "이 행을 클릭하면 색상이 특수 색상으로 변경되고 이전 행의 색상이 원래 색상으로 변경됩니다."입니다. 그러나 이것은 논리가 아닐 것 같습니다 실제로는을 원합니다. 오히려 마지막으로 클릭 한 (일명 선택된) 행을 다른 색으로 원하게됩니다.

코드를 게시하지 않았으므로이 프로젝트에서 사용자 고유의 ListAdapter를 구현하는지 알 수 없습니다. 그것이 내가 취할 접근법입니다. ListAdapter를 확장하는 클래스를 만들고 마지막으로 선택한 행의 위치를 ​​저장하는 추가 개인 변수를 만듭니다. 당신이 당신의 자신의 명부 어댑터를 만들 http://jnastase.alner.net/archive/2010/12/19/custom-android-listadapter.aspx에서 자습서를 확인하는 방법을 잘하지 않으면 그 다음 오버라이드 (override)의 getView() 메소드에 빠른 검사를

if(rowPosition == lastSelectedRowPosition) 
    viewToReturn.setBackgroundColor(); 

을한다.

관련 문제