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