java如何使用groupie库的绑定功能?
How to use bind function of groupie library in java?
我正在尝试在 recyclerView 中显示用户列表并尝试在 groupie 库中的绑定方法中连接 textview 布局,但我不知道如何 link 布局的 id 到 recyclerview viewHolder?以及如何在 viewholder 中使用 picasso 库?
private void fetchUser(){
DatabaseReference fireBaseReference = FirebaseDatabase.getInstance().getReference().child("/userList");
fireBaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
GroupAdapter groupA = new GroupAdapter<ViewHolder>();
for (DataSnapshot snapshot : dataSnapshot.getChildren()){
Log.d("userList",snapshot.toString());
Users string = snapshot.getValue(Users.class);
groupA.add(new UserItem());
}
recyclerView.setAdapter(groupA);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
class UserItem extends Item<ViewHolder>{
// public UserItem(Users users){
// }
private Users users = new Users();
@Override
public void bind(@NonNull ViewHolder viewHolder, int position) {
viewHolder.itemView.findViewById(R.id.user_name_from_user_list);
viewHolder.
Picasso.get().load(users.getUri()).into(viewHolder.itemView.findViewById(R.id.user_photo_from_user_list));
}
@Override
public int getLayout() {
return R.layout.user_list_view_layout;
}
}
Groupie 抽象出多个项目视图类型的复杂性。每个 Item 声明一个视图布局 ID,并获得一个回调来绑定膨胀的布局。这就是你所需要的;您可以将新项目直接添加到 GroupAdapter 并收工。
Kotlin 项目
Item class 为您提供简单的回调以将您的模型对象绑定到生成的字段。由于 Kotlin Android 扩展,无需编写视图持有者。**
class SongItem(private val song: Song) : Item() {
override fun getLayout() = R.layout.song
override fun bind(viewHolder: GroupieViewHolder, position: Int) {
viewHolder.title.text = song.title
viewHolder.artist.text = song.artist
}
}
具有数据绑定的项目:
Item class 为您提供了将模型对象绑定到生成的绑定的简单回调。由于数据绑定,无需编写视图持有者。
如果您要转换现有的 ViewHolder,则可以直接从绑定中引用任何命名视图(例如 R.id.title)。
@Override public void bind(SongBinding binding, int position) {
binding.title.setText(song.getTitle());
}
或者你可以这样做
@Override
public void bind(@NonNull final ViewHolder viewHolder, final int position) {
circleImageView = viewHolder.itemView.findViewById(R.id.circleImageViewForLatestMessage);
userMessage = viewHolder.itemView.findViewById(R.id.textView2);
userName = viewHolder.itemView.findViewById(R.id.textView41);
userName.setText(name);
userMessage.setText(messages);
您还可以在适配器中混合和匹配 BindableItem 和其他项目,这样您就可以通过创建项目来保留旧版查看器。
有关详细信息,请访问 Groupie Library
我正在尝试在 recyclerView 中显示用户列表并尝试在 groupie 库中的绑定方法中连接 textview 布局,但我不知道如何 link 布局的 id 到 recyclerview viewHolder?以及如何在 viewholder 中使用 picasso 库?
private void fetchUser(){
DatabaseReference fireBaseReference = FirebaseDatabase.getInstance().getReference().child("/userList");
fireBaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
GroupAdapter groupA = new GroupAdapter<ViewHolder>();
for (DataSnapshot snapshot : dataSnapshot.getChildren()){
Log.d("userList",snapshot.toString());
Users string = snapshot.getValue(Users.class);
groupA.add(new UserItem());
}
recyclerView.setAdapter(groupA);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
class UserItem extends Item<ViewHolder>{
// public UserItem(Users users){
// }
private Users users = new Users();
@Override
public void bind(@NonNull ViewHolder viewHolder, int position) {
viewHolder.itemView.findViewById(R.id.user_name_from_user_list);
viewHolder.
Picasso.get().load(users.getUri()).into(viewHolder.itemView.findViewById(R.id.user_photo_from_user_list));
}
@Override
public int getLayout() {
return R.layout.user_list_view_layout;
}
}
Groupie 抽象出多个项目视图类型的复杂性。每个 Item 声明一个视图布局 ID,并获得一个回调来绑定膨胀的布局。这就是你所需要的;您可以将新项目直接添加到 GroupAdapter 并收工。
Kotlin 项目 Item class 为您提供简单的回调以将您的模型对象绑定到生成的字段。由于 Kotlin Android 扩展,无需编写视图持有者。**
class SongItem(private val song: Song) : Item() {
override fun getLayout() = R.layout.song
override fun bind(viewHolder: GroupieViewHolder, position: Int) {
viewHolder.title.text = song.title
viewHolder.artist.text = song.artist
}
}
具有数据绑定的项目: Item class 为您提供了将模型对象绑定到生成的绑定的简单回调。由于数据绑定,无需编写视图持有者。
如果您要转换现有的 ViewHolder,则可以直接从绑定中引用任何命名视图(例如 R.id.title)。
@Override public void bind(SongBinding binding, int position) {
binding.title.setText(song.getTitle());
}
或者你可以这样做
@Override
public void bind(@NonNull final ViewHolder viewHolder, final int position) {
circleImageView = viewHolder.itemView.findViewById(R.id.circleImageViewForLatestMessage);
userMessage = viewHolder.itemView.findViewById(R.id.textView2);
userName = viewHolder.itemView.findViewById(R.id.textView41);
userName.setText(name);
userMessage.setText(messages);
您还可以在适配器中混合和匹配 BindableItem 和其他项目,这样您就可以通过创建项目来保留旧版查看器。
有关详细信息,请访问 Groupie Library