MDP :
이것은이보기 카나리아 11 + 설명 안드로이드 스튜디오 3.6에 새로운 어떤 구속력, 데이터 바인딩되지 않습니다 여기 .
그것은 분명하다 액티비티 내부에 사용하기 위해, 당신은 다음과 같이 사용하면
하자 우리라는 이름의 레이아웃이 있다고 activity_main.xml
그런 다음 코드에서 우리는 다음과 같이 사용할 수 있습니다 :
public class MainActivity extends Activity{
ActivityMainBinding binding; //Name of the layout in camel case + "Binding"
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
}
}
그러나, RecyclerView와 바인딩보기를 사용하는 방법을 분명하지 않다?
편집 : 자바 설명해주십시오.
MDP :
하자 우리가 RecyclerView의 내부가 있다고 가정 activity_main.xml
하고 해당 ID가"@+id/rv_test"
활동의 내부에서 우리는과 같이 사용할 수 있습니다 :
public class MainActivity extends Activity{
ActivityMainBinding binding; //Name of the layout in camel case + "Binding"
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this);
binding.rvTest.setLayoutManager(layoutManager);
}
}
하자의 이름 RecyclerView 항목의 레이아웃 test_list_item.xml
그리고 우리는이 같은 활동 안에 우리의 어댑터를 구현할 수 있습니다 :
public class MainActivity extends Activity{
ActivityMainBinding binding; //Name of the layout in camel case + "Binding"
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this);
binding.rvTest.setLayoutManager(layoutManager);
List<String> items = Arrays.asList("item", "item", "item");
binding.rvTest.setAdapter(new MyAdapter(items));
}
private class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder>{
private List<String> items;
private class MyViewHolder extends RecyclerView.ViewHolder{
TestListItemBinding binding;//Name of the test_list_item.xml in camel case + "Binding"
public MyViewHolder(TestListItemBinding b){
super(b.getRoot());
binding = b;
}
}
public MyAdapter(List<String> items){
this.items = items;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType){
return new MyViewHolder(TestListItemBinding.inflate(getLayoutInflater()));
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position){
String text = String.format(Locale.ENGLISH, "%s %d", items.get(position), position);
//An example of how to use the bindings
holder.binding.tvTest.setText(text);
}
@Override
public int getItemCount(){
return items.size();
}
}
}