0

나는 RecyclerView에서 간단한 바인딩을 만들었습니다. Android : RecyclerView 바인딩

나는이 같은 ViewHolder을 만들어 :

public class MyViewHolder extends RecyclerView.ViewHolder { 
    // each data item is just a string in this case 
    private final ViewDataBinding binding; 

    public MyViewHolder(ViewDataBinding binding) { 
     super(binding.getRoot()); 
     this.binding = binding; 
    } 
    public void bind(Object obj) { 
     binding.setVariable(BR.obj,obj); 
     binding.executePendingBindings(); 
    } 
} 

그리고 어댑터 :

class ItemViewHolder extends RecyclerView.ViewHolder{ 
    ItemBinding binding; 

    public ItemViewHolder(View itemView) { 
     super(itemView); 
     binding = DataBindingUtil.bind(itemView); 
    } 
} 

내가 this 튜토리얼을 읽고 ViewHolder이 같은 것을 볼이

@Override 
public void onBindViewHolder(ItemViewHolder holder, int position) { 
    MyItem item= items.get(position); 
    // bind model with data 
    holder.binding.setItem(item); 
} 

처럼 이루어집니다 바인딩 is

@Override 
public void onBindViewHolder(MyViewHolder holder, int position) { 
    final TemperatureData temperatureData = data.get(position); 
    holder.bind(temperatureData); 
} 

내 질문에 왜 public void bind(Object obj) 메서드가 필요합니까?

필자는 코드가 적어서 작동하지만 Android에 익숙하지 않습니다. 무언가를 놓칠 까봐 두렵습니다.

답변

1

이 방법을 사용하면 모든 클래스에 대한 설정자가 생성됩니다.

그러나 대부분의 경우 필수적인 것은 아닙니다.

그렇습니다.이 방법을 삭제할 수 있습니다. 여기서 일어날 수있는 최악의 경우는 설정자가 생성하지 않는 클래스를 앱에 추가하는 것입니다 (어느 지점에서 솔루션을 찾을 지 알 수 있습니다)

More info here

관련 문제