1

모든 종류의 레이아웃을 처리 할 수있는 사용자 지정 Adapter을 만들려고합니다. 제네릭이란 어댑터에 설정된 모든 종류의 데이터를 의미하며 어떤 종류의 레이아웃이라도 이벤트 리스너를 사용하여 항목에 설정할 수 있습니다.일반 ListView 어댑터

예 :

연락처 목록과 국가 목록이 있습니다. 연락처 목록에는 레이아웃에 네 개의 항목, 즉 사람 이미지, 이름, 번호 및 checkBox가 있습니다. Country List에는 CountryName (TextView)과 체크 상자가 있습니다.

동일한 어댑터를 사용할 수 있으며 해당 어댑터가 모든 종류의 항목을 처리 할 수 ​​있습니까?

모든 항목을 클릭 한 후 진드기 이미지가 재설정되기를 바랍니다.

+0

[참조하십시오] (http://samir-mangroliya.blogspot.in/p/android-image-listview.html) –

+0

답장을 보내 주셔서 감사합니다 . 하지만 그건 내가 찾던 것이 아닙니다. 내가 가지고있는 다른 링크와 비슷합니다. 더 나은 것들을 제공하겠습니다. D http://android.amberfog.com/?p=296 http://sudarmuthu.com/blog/using-arrayadapter-and-listview-in-android-applications 만약 당신은 내가 당신에게 더 많은 것을 제공 할 수 있기를 원합니다 : D ... 그러나 나는 List Item의 다른 종류를 다룰 수있는 일반적인 Adapter를 찾고 있습니다. 그리고 어떤 레이아웃을 하드 코딩하지 않아도됩니다. – Ahmed

+1

나는 일반적인 방법이 없다고 생각하지 않는다. 당신이 할 수있는 일은 당신이보기에 팽창하기 전에'switch' 문을 추가하는 것이다. 하지만 이해가되지 않습니다 ... 왜 당신은 하나의 어댑터를 원합니까? –

답변

3

다른 종류의 개체 일 수 있고 표시 할 다른보기가 필요한 목록이있는 경우 이렇게하면 :

개체가 뷰를 스스로 정의하게하십시오. 모든 객체에 인터페이스 ViewProvider을 구현하십시오. 이 인터페이스는 어댑터에서 호출 할 수있는 getView() 메소드를 제공해야합니다.

이제 어댑터는 ViewProviders으로 가득 찬 목록에서 요소를 가져오고 getView 메서드를 호출하여보기를 가져옵니다.

보기가 모두 ViewProvider에 저장되며 한 번만 생성되므로보기에서 재활용하는 것에 대해 걱정할 필요가 없습니다. 또한 필드의 업데이트 (있는 경우)는 어댑터가 아닌 객체 측에서 수행 할 수 있습니다. 그러나 전화로 데이터 변경에 대해 어댑터에 알릴 필요가 있습니다 notifyDataSetChanged()

+2

답장을 보내 주셔서 감사합니다. 나는 그 아이디어가 마음에 들지만 나는 아직도 이런 식으로하는 것이 확실하지 않다. 코드 샘플을 제공 할 수 있습니까? 감사 :) – Ahmed

관련 문제