이것은 개발자의 의견에 달려 있지만 Android 앱을 만들고 사용자 정의보기를 표시하는 Listview를 가지고 있는지 확실하지 않습니다. 내 레이아웃은 기본적으로 View (XML 리소스 파일과 루트 인 뷰에서 파생되는 클래스), Domain Model 객체 (뷰에 바인딩 할 데이터 있음) 및 BaseAdapter에서 파생 된 어댑터로 구성됩니다. 다음과 같이 getViewMethod에서 볼 수있는 도메인 모델로부터 데이터를 결합 :Android Binding 전략, 어댑터가 작업을 수행해야합니까?
모델 : SampleItem
사용자 정의보기 : SampleView
어댑터 : (아래 코드)
public View getView(int position, View convertView, ViewGroup parent) {
SampleView sampleView;
SampleItem item = (SampleItem)getItem(position);
if(convertView == null) {
sampleView = new SampleView(_context);
}
else {
sampleView = (SampleView)convertView;
}
sampleView.setTitle(item.getTitle());
sampleView.setContentText(item.getContent());
sampleView.setItemRowNumer(item.getRowNumber());
... //etc
return sampleView;
}
이것은 내가 항상 그것을 보았던 방법이지만, 나는 이것을하는 올바른 방법이라고 생각합니다.
데이터 바인딩에 대한 다른 접근 방법에서 얻은 내 생각에 실제 뷰 클래스에는 모델이 무엇인지 개념이없고 컨트롤이 데이터가 바인딩되는 방식으로 전환되는 어댑터 클래스로 전환됩니다. 다른 곳에 옮겨지면 존재하지 않을 수도 있습니다.
사용자 지정보기 클래스에 바인딩 된 개체에 대한 참조가 있고 생성자에서 데이터를 기반으로보기를 채 웁니다.
public View getView(int position, View convertView, ViewGroup parent) {
SampleView sampleView;
SampleItem item = (SampleItem)getItem(position);
if(convertView == null) {
sampleView = new SampleView(_context, item);
}
else {
sampleView = (SampleView)convertView;
}
return sampleView;
}
그리고 그 모델을 알고 그 책임의 외부 보인다 어댑터하고 작업 반대로 자신을 채우는 것이보기에 대한 실제 생성자 : 그래서 어댑터는이 작업을 수행하는 쉘 클래스는 본질적이다.
이보기는 Android [[이와 비슷한 형식으로] (http://code.google.com/p/android-binding/wiki/Motivation)에서 구현할 수있는 MVVM UI 디자인 패턴과 일치합니다. 전체 MVVM 패턴을 이해하는 데 다소 시간이 걸립니다. – Cel