唷_我是人類 2021-09-13 16:17 采纳率: 66.7%
浏览 31
已结题

RecyclerView 里面放ViewPager 照片问题

img

我想要在Recyler每个item中 放入Viewpager 滑动三个照片

照片uri 已经放在String[]里面 再用Glide显示

共有三组String[] 每一组String1[0] String2[0] String3[0] 放在同一个Recycler中的Viewager 里面

问题是 我不知道如何 把这些图片资料 放在合适的位置 **
** 下面是 我的code 如果可以直接补全我会更容易懂 谢谢各位


import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager2.widget.ViewPager2;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {
    RecyclerView mRecyclerView;
    MyListAdapter myListAdapter;
    public static String[] str, str2, str3;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        //設置RecycleView
        mRecyclerView = findViewById(R.id.recyclerview);
        //設置Manger
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
        //這行是分隔線
        mRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));

        //實現Adapter物件 並配置Adapter
        myListAdapter = new MyListAdapter();
        mRecyclerView.setAdapter(myListAdapter);
        str = new String[4];
        str2 = new String[4];
        str3 = new String[4];

        str[0] = "https://firebasestorage.googleapis.com/v0/b/petadoption-c1201.appspot.com/o/pet_photo%2Fpet_photo_1.jpg?alt=media&token=a4396266-aae9-4d1c-8644-ce26b8b4e4b2";
        str2[0] = "空";
        str3[0] = "空";

        str[1] = "https://firebasestorage.googleapis.com/v0/b/petadoption-c1201.appspot.com/o/pet_photo%2Fpet_photo_2.jpg?alt=media&token=f06576e2-7885-4ab3-ac3f-7874bbcf150e";
        str2[1] = "空";
        str3[1] = "空";

        str[2] = "https://firebasestorage.googleapis.com/v0/b/petadoption-c1201.appspot.com/o/pet_photo%2Fpet_photo_20.jpg?alt=media&token=1d567c51-c877-4a55-97f1-ecff21cd2749";
        str2[2] = "https://firebasestorage.googleapis.com/v0/b/petadoption-c1201.appspot.com/o/pet_photo%2Fpet_photo_20_2.jpg?alt=media&token=254eee2c-3f1a-43f2-835f-81e1a6613158";
        str3[2] = "https://firebasestorage.googleapis.com/v0/b/petadoption-c1201.appspot.com/o/pet_photo%2Fpet_photo_20_3.jpg?alt=media&token=e7ac48df-ed3b-426e-b307-6b777ebbe2fa";

        str[3] = "https://firebasestorage.googleapis.com/v0/b/petadoption-c1201.appspot.com/o/pet_photo%2Fpet_photo_21.jpg?alt=media&token=2aa85826-48c1-47b1-a6a0-39745e73e516";
        str2[3] = "https://firebasestorage.googleapis.com/v0/b/petadoption-c1201.appspot.com/o/pet_photo%2Fpet_photo_21_2.jpg?alt=media&token=dc916cf2-9abb-4355-b72b-c487ee2b8be6";
        str3[3] = "https://firebasestorage.googleapis.com/v0/b/petadoption-c1201.appspot.com/o/pet_photo%2Fpet_photo_21_3.jpg?alt=media&token=5b069f07-13b8-4736-aa10-820762a97be1";


    }

    class MyListAdapter extends RecyclerView.Adapter<MyListAdapter.ViewHolder> {
        private ViewPager2Adapter viewPager2Adapter = new ViewPager2Adapter();

        class ViewHolder extends RecyclerView.ViewHolder {
            private ViewPager2 pager2;

            public ViewHolder(@NonNull View itemView) {
                super(itemView);

                pager2 = itemView.findViewById(R.id.viewpager2);
                pager2.setAdapter(viewPager2Adapter);
                
            }
        }

        @NonNull
        @Override  //帶入布局
        public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.recycler_item, parent, false);
            return new ViewHolder(view);

        }

        @Override  //從這裡面變更設定內容 引用holder.裡面 finID的資料修改
        public void onBindViewHolder(@NonNull ViewHolder holder, int position) {


        }

        @Override   //顯示條列
        public int getItemCount() {
            return str.length;
        }
    }
//**************************************************
    
    class ViewPager2Adapter extends RecyclerView.Adapter<ViewPager2Adapter.ViewHolder> {

        class ViewHolder extends RecyclerView.ViewHolder {

            private ImageView imageView;

            public ViewHolder(@NonNull View itemView) {
                super(itemView);

                imageView = itemView.findViewById(R.id.imageview);
                
            }

        }

        @NonNull
        @Override
        public ViewPager2Adapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            return new ViewPager2Adapter.ViewHolder(
                    LayoutInflater.from(parent.getContext()).inflate(
                            R.layout.viewpager2_item, parent, false));


        }

        @Override
        public void onBindViewHolder(@NonNull ViewHolder holder, int position) {

        }


        @Override
        public int getItemCount() {
            return 3;
        }

    }
}


  • 写回答

3条回答 默认 最新

  • Yumito 2021-09-13 17:22
    关注

    我猜你的意思是这些图片如何放到viewpager里的imageview中。
    我建议你在recycleview里,创建viewpager的时候顺便把数据的list也传递下来,不然你不知道生成多少个viewpager来存。你需要list.length
    再下一层viewpager的时候再把这个数据提过来
    你需要的应该是一个数据Bean类
    class recycle的list{
    viewpager的标题
    viewpager的图片数据list
    set
    get
    }
    class viewpager的图片数据{
    标题name
    str[0 1 2] 图片地址
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月22日
  • 已采纳回答 9月14日
  • 创建了问题 9月13日

悬赏问题

  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝