为了账号安全,请及时绑定邮箱和手机立即绑定

如何在主活动的一个回收器视图中显示 2 个适配器?

如何在主活动的一个回收器视图中显示 2 个适配器?

开心每一天1111 2023-10-19 14:56:50
我有 2 个适配器,我想在一个回收视图中显示 2 个适配器。例如,我有一个用于带有图像的帖子的适配器,另一个我有一个用于没有图像的帖子的适配器。我想显示带有图像的适配器帖子和没有图像的帖子,我尝试了一些,我的代码如下。这是我的主要活动。 //with image  private List<ModelPostImage> postImageList;  private AdapterImage adapterImage; //without imageprivate List<ModelPost> postList;private AdapterPost adapterPost;//load posts loadPostWithImage(); loadPostWithoutImage(); //loadWithImage private void loadPostWithImage() {    DatabaseReference ref  FirebaseDatabase.getInstance().getReference("postImage");    ref.addValueEventListener(new ValueEventListener() {        @Override        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {            postImageList.clear();            for (DataSnapshot ds : dataSnapshot.getChildren()) {                ModelPostImage modelPostImage=                    ds.getValue(ModelPostImage.class);                postImageList.add(modelPostImage);                adapterImage= new AdapterImage(MainActivity.this,                  postImageList);                //set adapter to RecyclerView                recyclerView.setAdapter(adapterImage);            }        }  //loadWithoutImage   private void loadPostWithoutImage() {    DatabaseReference ref  FirebaseDatabase.getInstance().getReference("Posts");    ref.addValueEventListener(new ValueEventListener() {        @Override        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {            postList.clear();            for (DataSnapshot ds : dataSnapshot.getChildren()) {                ModelPost modelPost=                    ds.getValue(ModelPost.class);                postList.add(modelPost);                adapterPost = new AdapterPost(MainActivity.this,                  postList);                //set adapter to RecyclerView                recyclerView.setAdapter(adapterPost);它不显示带有图像的帖子,我该怎么办?
查看完整描述

3 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

对 RecyclerView 适配器使用 2 种 ViewHolder,而不是在 1 个 RecyclerView 中使用 2 个适配器


查看完整回答
反对 回复 2023-10-19
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

我不认为你可以在一个 recyclerview 上使用 2 个适配器,但你可以做的是为你的适配器创建多个 viewholder 类型以实现不同类型的布局。

查看完整回答
反对 回复 2023-10-19
?
慕的地10843

TA贡献1785条经验 获得超8个赞

您可以一次在一个适配器中RecyclerView添加一个或多个视图,而不是在一个适配器中使用两个适配器。您只需重写getItemViewType()适配器中的方法,如下所示:


@Override

public int getItemViewType(int position)

{

   if(position==0)

     return LAYOUT_ONE;

   else

     return LAYOUT_TWO;

你可以onCreateViewHolder像这样添加你的观点:


@Override

   public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {


      View view =null;

      RecyclerView.ViewHolder viewHolder = null;


      if(viewType==LAYOUT_ONE)

      {

          view = LayoutInflater.from(parent.getContext()).inflate(R.layout.one,parent,false);

          viewHolder = new ViewHolderOne(view);

      }

      else

      {

          view = LayoutInflater.from(parent.getContext()).inflate(R.layout.two,parent,false);

          viewHolder= new ViewHolderTwo(view);

      }


      return viewHolder;

   }

并onBindViewHolder()做这样的事情:


    @Override

       public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {


          if(holder.getItemViewType()== LAYOUT_ONE)

          {

                // Typecast Viewholder 

                // Set Viewholder properties 

                // Add any click listener if any 

          }

          else {


            ViewHolderOne vaultItemHolder = (ViewHolderOne) holder;

            vaultItemHolder.name.setText(displayText);

            vaultItemHolder.name.setOnClickListener(new View.OnClickListener() {

               @Override

               public void onClick(View v) {

                .......

               }

             });


           }

}


查看完整回答
反对 回复 2023-10-19
  • 3 回答
  • 0 关注
  • 104 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信